Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[deliverable/linux.git] / scripts / kconfig / zconf.tab.c_shipped
1 /* A Bison parser, made by GNU Bison 2.3. */
2
3 /* Skeleton implementation for Bison's Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6 Free Software Foundation, Inc.
7
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)
11 any later version.
12
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.
17
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. */
22
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.
32
33 This special exception was added by the Free Software Foundation in
34 version 2.2 of Bison. */
35
36 /* C LALR(1) parser skeleton written by Richard Stallman, by
37 simplifying the original so-called "semantic" parser. */
38
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. */
45
46 /* Identify Bison output. */
47 #define YYBISON 1
48
49 /* Bison version. */
50 #define YYBISON_VERSION "2.3"
51
52 /* Skeleton name. */
53 #define YYSKELETON_NAME "yacc.c"
54
55 /* Pure parsers. */
56 #define YYPURE 0
57
58 /* Using locations. */
59 #define YYLSP_NEEDED 0
60
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
69
70
71 /* Tokens. */
72 #ifndef YYTOKENTYPE
73 # define YYTOKENTYPE
74 /* Put the tokens into the symbol table, so that GDB and other debuggers
75 know about them. */
76 enum yytokentype {
77 T_MAINMENU = 258,
78 T_MENU = 259,
79 T_ENDMENU = 260,
80 T_SOURCE = 261,
81 T_CHOICE = 262,
82 T_ENDCHOICE = 263,
83 T_COMMENT = 264,
84 T_CONFIG = 265,
85 T_MENUCONFIG = 266,
86 T_HELP = 267,
87 T_HELPTEXT = 268,
88 T_IF = 269,
89 T_ENDIF = 270,
90 T_DEPENDS = 271,
91 T_OPTIONAL = 272,
92 T_PROMPT = 273,
93 T_TYPE = 274,
94 T_DEFAULT = 275,
95 T_SELECT = 276,
96 T_RANGE = 277,
97 T_OPTION = 278,
98 T_ON = 279,
99 T_WORD = 280,
100 T_WORD_QUOTE = 281,
101 T_UNEQUAL = 282,
102 T_CLOSE_PAREN = 283,
103 T_OPEN_PAREN = 284,
104 T_EOL = 285,
105 T_OR = 286,
106 T_AND = 287,
107 T_EQUAL = 288,
108 T_NOT = 289
109 };
110 #endif
111 /* Tokens. */
112 #define T_MAINMENU 258
113 #define T_MENU 259
114 #define T_ENDMENU 260
115 #define T_SOURCE 261
116 #define T_CHOICE 262
117 #define T_ENDCHOICE 263
118 #define T_COMMENT 264
119 #define T_CONFIG 265
120 #define T_MENUCONFIG 266
121 #define T_HELP 267
122 #define T_HELPTEXT 268
123 #define T_IF 269
124 #define T_ENDIF 270
125 #define T_DEPENDS 271
126 #define T_OPTIONAL 272
127 #define T_PROMPT 273
128 #define T_TYPE 274
129 #define T_DEFAULT 275
130 #define T_SELECT 276
131 #define T_RANGE 277
132 #define T_OPTION 278
133 #define T_ON 279
134 #define T_WORD 280
135 #define T_WORD_QUOTE 281
136 #define T_UNEQUAL 282
137 #define T_CLOSE_PAREN 283
138 #define T_OPEN_PAREN 284
139 #define T_EOL 285
140 #define T_OR 286
141 #define T_AND 287
142 #define T_EQUAL 288
143 #define T_NOT 289
144
145
146
147
148 /* Copy the first part of user declarations. */
149
150
151 /*
152 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
153 * Released under the terms of the GNU GPL v2.0.
154 */
155
156 #include <ctype.h>
157 #include <stdarg.h>
158 #include <stdio.h>
159 #include <stdlib.h>
160 #include <string.h>
161 #include <stdbool.h>
162
163 #define LKC_DIRECT_LINK
164 #include "lkc.h"
165
166 #include "zconf.hash.c"
167
168 #define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
169
170 #define PRINTD 0x0001
171 #define DEBUG_PARSE 0x0002
172
173 int cdebug = PRINTD;
174
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);
180
181 struct symbol *symbol_hash[257];
182
183 static struct menu *current_menu, *current_entry;
184
185 #define YYDEBUG 0
186 #if YYDEBUG
187 #define YYERROR_VERBOSE
188 #endif
189
190
191 /* Enabling traces. */
192 #ifndef YYDEBUG
193 # define YYDEBUG 0
194 #endif
195
196 /* Enabling verbose error messages. */
197 #ifdef YYERROR_VERBOSE
198 # undef YYERROR_VERBOSE
199 # define YYERROR_VERBOSE 1
200 #else
201 # define YYERROR_VERBOSE 0
202 #endif
203
204 /* Enabling the token table. */
205 #ifndef YYTOKEN_TABLE
206 # define YYTOKEN_TABLE 0
207 #endif
208
209 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
210 typedef union YYSTYPE
211
212 {
213 char *string;
214 struct file *file;
215 struct symbol *symbol;
216 struct expr *expr;
217 struct menu *menu;
218 struct kconf_id *id;
219 }
220 /* Line 187 of yacc.c. */
221
222 YYSTYPE;
223 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
224 # define YYSTYPE_IS_DECLARED 1
225 # define YYSTYPE_IS_TRIVIAL 1
226 #endif
227
228
229
230 /* Copy the second part of user declarations. */
231
232
233 /* Line 216 of yacc.c. */
234
235
236 #ifdef short
237 # undef short
238 #endif
239
240 #ifdef YYTYPE_UINT8
241 typedef YYTYPE_UINT8 yytype_uint8;
242 #else
243 typedef unsigned char yytype_uint8;
244 #endif
245
246 #ifdef YYTYPE_INT8
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;
251 #else
252 typedef short int yytype_int8;
253 #endif
254
255 #ifdef YYTYPE_UINT16
256 typedef YYTYPE_UINT16 yytype_uint16;
257 #else
258 typedef unsigned short int yytype_uint16;
259 #endif
260
261 #ifdef YYTYPE_INT16
262 typedef YYTYPE_INT16 yytype_int16;
263 #else
264 typedef short int yytype_int16;
265 #endif
266
267 #ifndef YYSIZE_T
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
276 # else
277 # define YYSIZE_T unsigned int
278 # endif
279 #endif
280
281 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
282
283 #ifndef YY_
284 # if YYENABLE_NLS
285 # if ENABLE_NLS
286 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
287 # define YY_(msgid) dgettext ("bison-runtime", msgid)
288 # endif
289 # endif
290 # ifndef YY_
291 # define YY_(msgid) msgid
292 # endif
293 #endif
294
295 /* Suppress unused-variable warnings by "using" E. */
296 #if ! defined lint || defined __GNUC__
297 # define YYUSE(e) ((void) (e))
298 #else
299 # define YYUSE(e) /* empty */
300 #endif
301
302 /* Identity function, used to suppress warnings about constant conditions. */
303 #ifndef lint
304 # define YYID(n) (n)
305 #else
306 #if (defined __STDC__ || defined __C99__FUNC__ \
307 || defined __cplusplus || defined _MSC_VER)
308 static int
309 YYID (int i)
310 #else
311 static int
312 YYID (i)
313 int i;
314 #endif
315 {
316 return i;
317 }
318 #endif
319
320 #if ! defined yyoverflow || YYERROR_VERBOSE
321
322 /* The parser invokes alloca or malloc; define the necessary symbols. */
323
324 # ifdef YYSTACK_USE_ALLOCA
325 # if YYSTACK_USE_ALLOCA
326 # ifdef __GNUC__
327 # define YYSTACK_ALLOC __builtin_alloca
328 # elif defined __BUILTIN_VA_ARG_INCR
329 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
330 # elif defined _AIX
331 # define YYSTACK_ALLOC __alloca
332 # elif defined _MSC_VER
333 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
334 # define alloca _alloca
335 # else
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 */
340 # ifndef _STDLIB_H
341 # define _STDLIB_H 1
342 # endif
343 # endif
344 # endif
345 # endif
346 # endif
347
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 */
357 # endif
358 # else
359 # define YYSTACK_ALLOC YYMALLOC
360 # define YYSTACK_FREE YYFREE
361 # ifndef YYSTACK_ALLOC_MAXIMUM
362 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
363 # endif
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 */
368 # ifndef _STDLIB_H
369 # define _STDLIB_H 1
370 # endif
371 # endif
372 # ifndef YYMALLOC
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 */
377 # endif
378 # endif
379 # ifndef YYFREE
380 # define YYFREE free
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 */
384 # endif
385 # endif
386 # endif
387 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
388
389
390 #if (! defined yyoverflow \
391 && (! defined __cplusplus \
392 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
393
394 /* A type that is properly aligned for any stack member. */
395 union yyalloc
396 {
397 yytype_int16 yyss;
398 YYSTYPE yyvs;
399 };
400
401 /* The size of the maximum gap between one aligned stack and the next. */
402 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
403
404 /* The size of an array large to enough to hold all stacks, each with
405 N elements. */
406 # define YYSTACK_BYTES(N) \
407 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
408 + YYSTACK_GAP_MAXIMUM)
409
410 /* Copy COUNT objects from FROM to TO. The source and destination do
411 not overlap. */
412 # ifndef YYCOPY
413 # if defined __GNUC__ && 1 < __GNUC__
414 # define YYCOPY(To, From, Count) \
415 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
416 # else
417 # define YYCOPY(To, From, Count) \
418 do \
419 { \
420 YYSIZE_T yyi; \
421 for (yyi = 0; yyi < (Count); yyi++) \
422 (To)[yyi] = (From)[yyi]; \
423 } \
424 while (YYID (0))
425 # endif
426 # endif
427
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
432 stack. */
433 # define YYSTACK_RELOCATE(Stack) \
434 do \
435 { \
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); \
441 } \
442 while (YYID (0))
443
444 #endif
445
446 /* YYFINAL -- State number of the termination state. */
447 #define YYFINAL 3
448 /* YYLAST -- Last index in YYTABLE. */
449 #define YYLAST 259
450
451 /* YYNTOKENS -- Number of terminals. */
452 #define YYNTOKENS 35
453 /* YYNNTS -- Number of nonterminals. */
454 #define YYNNTS 46
455 /* YYNRULES -- Number of rules. */
456 #define YYNRULES 110
457 /* YYNRULES -- Number of states. */
458 #define YYNSTATES 180
459
460 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
461 #define YYUNDEFTOK 2
462 #define YYMAXUTOK 289
463
464 #define YYTRANSLATE(YYX) \
465 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
466
467 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
468 static const yytype_uint8 yytranslate[] =
469 {
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
499 };
500
501 #if YYDEBUG
502 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
503 YYRHS. */
504 static const yytype_uint16 yyprhs[] =
505 {
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,
517 322
518 };
519
520 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
521 static const yytype_int8 yyrhs[] =
522 {
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,
555 -1, -1, 25, -1
556 };
557
558 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
559 static const yytype_uint16 yyrline[] =
560 {
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,
572 463
573 };
574 #endif
575
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[] =
580 {
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",
597 "word_opt", 0
598 };
599 #endif
600
601 # ifdef YYPRINT
602 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
603 token YYLEX-NUM. */
604 static const yytype_uint16 yytoknum[] =
605 {
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
610 };
611 # endif
612
613 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
614 static const yytype_uint8 yyr1[] =
615 {
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,
627 80
628 };
629
630 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
631 static const yytype_uint8 yyr2[] =
632 {
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,
644 1
645 };
646
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[] =
651 {
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
670 };
671
672 /* YYDEFGOTO[NTERM-NUM]. */
673 static const yytype_int16 yydefgoto[] =
674 {
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
680 };
681
682 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
683 STATE-NUM. */
684 #define YYPACT_NINF -80
685 static const yytype_int16 yypact[] =
686 {
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
705 };
706
707 /* YYPGOTO[NTERM-NUM]. */
708 static const yytype_int16 yypgoto[] =
709 {
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
715 };
716
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[] =
723 {
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
750 };
751
752 static const yytype_int16 yycheck[] =
753 {
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
780 };
781
782 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
783 symbol of state STATE-NUM. */
784 static const yytype_uint8 yystos[] =
785 {
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
804 };
805
806 #define yyerrok (yyerrstatus = 0)
807 #define yyclearin (yychar = YYEMPTY)
808 #define YYEMPTY (-2)
809 #define YYEOF 0
810
811 #define YYACCEPT goto yyacceptlab
812 #define YYABORT goto yyabortlab
813 #define YYERROR goto yyerrorlab
814
815
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. */
819
820 #define YYFAIL goto yyerrlab
821
822 #define YYRECOVERING() (!!yyerrstatus)
823
824 #define YYBACKUP(Token, Value) \
825 do \
826 if (yychar == YYEMPTY && yylen == 1) \
827 { \
828 yychar = (Token); \
829 yylval = (Value); \
830 yytoken = YYTRANSLATE (yychar); \
831 YYPOPSTACK (1); \
832 goto yybackup; \
833 } \
834 else \
835 { \
836 yyerror (YY_("syntax error: cannot back up")); \
837 YYERROR; \
838 } \
839 while (YYID (0))
840
841
842 #define YYTERROR 1
843 #define YYERRCODE 256
844
845
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). */
849
850 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
851 #ifndef YYLLOC_DEFAULT
852 # define YYLLOC_DEFAULT(Current, Rhs, N) \
853 do \
854 if (YYID (N)) \
855 { \
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; \
860 } \
861 else \
862 { \
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; \
867 } \
868 while (YYID (0))
869 #endif
870
871
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. */
875
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)
882 # else
883 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
884 # endif
885 #endif
886
887
888 /* YYLEX -- calling `yylex' with the right arguments. */
889
890 #ifdef YYLEX_PARAM
891 # define YYLEX yylex (YYLEX_PARAM)
892 #else
893 # define YYLEX yylex ()
894 #endif
895
896 /* Enable debugging if requested. */
897 #if YYDEBUG
898
899 # ifndef YYFPRINTF
900 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
901 # define YYFPRINTF fprintf
902 # endif
903
904 # define YYDPRINTF(Args) \
905 do { \
906 if (yydebug) \
907 YYFPRINTF Args; \
908 } while (YYID (0))
909
910 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
911 do { \
912 if (yydebug) \
913 { \
914 YYFPRINTF (stderr, "%s ", Title); \
915 yy_symbol_print (stderr, \
916 Type, Value); \
917 YYFPRINTF (stderr, "\n"); \
918 } \
919 } while (YYID (0))
920
921
922 /*--------------------------------.
923 | Print this symbol on YYOUTPUT. |
924 `--------------------------------*/
925
926 /*ARGSUSED*/
927 #if (defined __STDC__ || defined __C99__FUNC__ \
928 || defined __cplusplus || defined _MSC_VER)
929 static void
930 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
931 #else
932 static void
933 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
934 FILE *yyoutput;
935 int yytype;
936 YYSTYPE const * const yyvaluep;
937 #endif
938 {
939 if (!yyvaluep)
940 return;
941 # ifdef YYPRINT
942 if (yytype < YYNTOKENS)
943 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
944 # else
945 YYUSE (yyoutput);
946 # endif
947 switch (yytype)
948 {
949 default:
950 break;
951 }
952 }
953
954
955 /*--------------------------------.
956 | Print this symbol on YYOUTPUT. |
957 `--------------------------------*/
958
959 #if (defined __STDC__ || defined __C99__FUNC__ \
960 || defined __cplusplus || defined _MSC_VER)
961 static void
962 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
963 #else
964 static void
965 yy_symbol_print (yyoutput, yytype, yyvaluep)
966 FILE *yyoutput;
967 int yytype;
968 YYSTYPE const * const yyvaluep;
969 #endif
970 {
971 if (yytype < YYNTOKENS)
972 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
973 else
974 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
975
976 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
977 YYFPRINTF (yyoutput, ")");
978 }
979
980 /*------------------------------------------------------------------.
981 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
982 | TOP (included). |
983 `------------------------------------------------------------------*/
984
985 #if (defined __STDC__ || defined __C99__FUNC__ \
986 || defined __cplusplus || defined _MSC_VER)
987 static void
988 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
989 #else
990 static void
991 yy_stack_print (bottom, top)
992 yytype_int16 *bottom;
993 yytype_int16 *top;
994 #endif
995 {
996 YYFPRINTF (stderr, "Stack now");
997 for (; bottom <= top; ++bottom)
998 YYFPRINTF (stderr, " %d", *bottom);
999 YYFPRINTF (stderr, "\n");
1000 }
1001
1002 # define YY_STACK_PRINT(Bottom, Top) \
1003 do { \
1004 if (yydebug) \
1005 yy_stack_print ((Bottom), (Top)); \
1006 } while (YYID (0))
1007
1008
1009 /*------------------------------------------------.
1010 | Report that the YYRULE is going to be reduced. |
1011 `------------------------------------------------*/
1012
1013 #if (defined __STDC__ || defined __C99__FUNC__ \
1014 || defined __cplusplus || defined _MSC_VER)
1015 static void
1016 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
1017 #else
1018 static void
1019 yy_reduce_print (yyvsp, yyrule)
1020 YYSTYPE *yyvsp;
1021 int yyrule;
1022 #endif
1023 {
1024 int yynrhs = yyr2[yyrule];
1025 int yyi;
1026 unsigned long int yylno = yyrline[yyrule];
1027 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1028 yyrule - 1, yylno);
1029 /* The symbols being reduced. */
1030 for (yyi = 0; yyi < yynrhs; yyi++)
1031 {
1032 fprintf (stderr, " $%d = ", yyi + 1);
1033 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1034 &(yyvsp[(yyi + 1) - (yynrhs)])
1035 );
1036 fprintf (stderr, "\n");
1037 }
1038 }
1039
1040 # define YY_REDUCE_PRINT(Rule) \
1041 do { \
1042 if (yydebug) \
1043 yy_reduce_print (yyvsp, Rule); \
1044 } while (YYID (0))
1045
1046 /* Nonzero means print parse trace. It is left uninitialized so that
1047 multiple parsers can coexist. */
1048 int yydebug;
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 */
1055
1056
1057 /* YYINITDEPTH -- initial size of the parser's stacks. */
1058 #ifndef YYINITDEPTH
1059 # define YYINITDEPTH 200
1060 #endif
1061
1062 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1063 if the built-in stack extension method is used).
1064
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. */
1068
1069 #ifndef YYMAXDEPTH
1070 # define YYMAXDEPTH 10000
1071 #endif
1072
1073 \f
1074
1075 #if YYERROR_VERBOSE
1076
1077 # ifndef yystrlen
1078 # if defined __GLIBC__ && defined _STRING_H
1079 # define yystrlen strlen
1080 # else
1081 /* Return the length of YYSTR. */
1082 #if (defined __STDC__ || defined __C99__FUNC__ \
1083 || defined __cplusplus || defined _MSC_VER)
1084 static YYSIZE_T
1085 yystrlen (const char *yystr)
1086 #else
1087 static YYSIZE_T
1088 yystrlen (yystr)
1089 const char *yystr;
1090 #endif
1091 {
1092 YYSIZE_T yylen;
1093 for (yylen = 0; yystr[yylen]; yylen++)
1094 continue;
1095 return yylen;
1096 }
1097 # endif
1098 # endif
1099
1100 # ifndef yystpcpy
1101 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1102 # define yystpcpy stpcpy
1103 # else
1104 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1105 YYDEST. */
1106 #if (defined __STDC__ || defined __C99__FUNC__ \
1107 || defined __cplusplus || defined _MSC_VER)
1108 static char *
1109 yystpcpy (char *yydest, const char *yysrc)
1110 #else
1111 static char *
1112 yystpcpy (yydest, yysrc)
1113 char *yydest;
1114 const char *yysrc;
1115 #endif
1116 {
1117 char *yyd = yydest;
1118 const char *yys = yysrc;
1119
1120 while ((*yyd++ = *yys++) != '\0')
1121 continue;
1122
1123 return yyd - 1;
1124 }
1125 # endif
1126 # endif
1127
1128 # ifndef yytnamerr
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
1135 would have been. */
1136 static YYSIZE_T
1137 yytnamerr (char *yyres, const char *yystr)
1138 {
1139 if (*yystr == '"')
1140 {
1141 YYSIZE_T yyn = 0;
1142 char const *yyp = yystr;
1143
1144 for (;;)
1145 switch (*++yyp)
1146 {
1147 case '\'':
1148 case ',':
1149 goto do_not_strip_quotes;
1150
1151 case '\\':
1152 if (*++yyp != '\\')
1153 goto do_not_strip_quotes;
1154 /* Fall through. */
1155 default:
1156 if (yyres)
1157 yyres[yyn] = *yyp;
1158 yyn++;
1159 break;
1160
1161 case '"':
1162 if (yyres)
1163 yyres[yyn] = '\0';
1164 return yyn;
1165 }
1166 do_not_strip_quotes: ;
1167 }
1168
1169 if (! yyres)
1170 return yystrlen (yystr);
1171
1172 return yystpcpy (yyres, yystr) - yyres;
1173 }
1174 # endif
1175
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. */
1183 static YYSIZE_T
1184 yysyntax_error (char *yyresult, int yystate, int yychar)
1185 {
1186 int yyn = yypact[yystate];
1187
1188 if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1189 return 0;
1190 else
1191 {
1192 int yytype = YYTRANSLATE (yychar);
1193 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1194 YYSIZE_T yysize = yysize0;
1195 YYSIZE_T yysize1;
1196 int yysize_overflow = 0;
1197 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1198 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1199 int yyx;
1200
1201 # if 0
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");
1209 # endif
1210 char *yyfmt;
1211 char const *yyf;
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;
1220
1221 /* Start YYX at -YYN if negative to avoid negative indexes in
1222 YYCHECK. */
1223 int yyxbegin = yyn < 0 ? -yyn : 0;
1224
1225 /* Stay within bounds of both yycheck and yytname. */
1226 int yychecklim = YYLAST - yyn + 1;
1227 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1228 int yycount = 1;
1229
1230 yyarg[0] = yytname[yytype];
1231 yyfmt = yystpcpy (yyformat, yyunexpected);
1232
1233 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1234 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1235 {
1236 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1237 {
1238 yycount = 1;
1239 yysize = yysize0;
1240 yyformat[sizeof yyunexpected - 1] = '\0';
1241 break;
1242 }
1243 yyarg[yycount++] = yytname[yyx];
1244 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1245 yysize_overflow |= (yysize1 < yysize);
1246 yysize = yysize1;
1247 yyfmt = yystpcpy (yyfmt, yyprefix);
1248 yyprefix = yyor;
1249 }
1250
1251 yyf = YY_(yyformat);
1252 yysize1 = yysize + yystrlen (yyf);
1253 yysize_overflow |= (yysize1 < yysize);
1254 yysize = yysize1;
1255
1256 if (yysize_overflow)
1257 return YYSIZE_MAXIMUM;
1258
1259 if (yyresult)
1260 {
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;
1265 int yyi = 0;
1266 while ((*yyp = *yyf) != '\0')
1267 {
1268 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1269 {
1270 yyp += yytnamerr (yyp, yyarg[yyi++]);
1271 yyf += 2;
1272 }
1273 else
1274 {
1275 yyp++;
1276 yyf++;
1277 }
1278 }
1279 }
1280 return yysize;
1281 }
1282 }
1283 #endif /* YYERROR_VERBOSE */
1284 \f
1285
1286 /*-----------------------------------------------.
1287 | Release the memory associated to this symbol. |
1288 `-----------------------------------------------*/
1289
1290 /*ARGSUSED*/
1291 #if (defined __STDC__ || defined __C99__FUNC__ \
1292 || defined __cplusplus || defined _MSC_VER)
1293 static void
1294 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1295 #else
1296 static void
1297 yydestruct (yymsg, yytype, yyvaluep)
1298 const char *yymsg;
1299 int yytype;
1300 YYSTYPE *yyvaluep;
1301 #endif
1302 {
1303 YYUSE (yyvaluep);
1304
1305 if (!yymsg)
1306 yymsg = "Deleting";
1307 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1308
1309 switch (yytype)
1310 {
1311 case 51: /* "choice_entry" */
1312
1313 {
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))
1317 menu_end_menu();
1318 };
1319
1320 break;
1321 case 57: /* "if_entry" */
1322
1323 {
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))
1327 menu_end_menu();
1328 };
1329
1330 break;
1331 case 62: /* "menu_entry" */
1332
1333 {
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))
1337 menu_end_menu();
1338 };
1339
1340 break;
1341
1342 default:
1343 break;
1344 }
1345 }
1346 \f
1347
1348 /* Prevent warnings from -Wmissing-prototypes. */
1349
1350 #ifdef YYPARSE_PARAM
1351 #if defined __STDC__ || defined __cplusplus
1352 int yyparse (void *YYPARSE_PARAM);
1353 #else
1354 int yyparse ();
1355 #endif
1356 #else /* ! YYPARSE_PARAM */
1357 #if defined __STDC__ || defined __cplusplus
1358 int yyparse (void);
1359 #else
1360 int yyparse ();
1361 #endif
1362 #endif /* ! YYPARSE_PARAM */
1363
1364
1365
1366 /* The look-ahead symbol. */
1367 int yychar;
1368
1369 /* The semantic value of the look-ahead symbol. */
1370 YYSTYPE yylval;
1371
1372 /* Number of syntax errors so far. */
1373 int yynerrs;
1374
1375
1376
1377 /*----------.
1378 | yyparse. |
1379 `----------*/
1380
1381 #ifdef YYPARSE_PARAM
1382 #if (defined __STDC__ || defined __C99__FUNC__ \
1383 || defined __cplusplus || defined _MSC_VER)
1384 int
1385 yyparse (void *YYPARSE_PARAM)
1386 #else
1387 int
1388 yyparse (YYPARSE_PARAM)
1389 void *YYPARSE_PARAM;
1390 #endif
1391 #else /* ! YYPARSE_PARAM */
1392 #if (defined __STDC__ || defined __C99__FUNC__ \
1393 || defined __cplusplus || defined _MSC_VER)
1394 int
1395 yyparse (void)
1396 #else
1397 int
1398 yyparse ()
1399
1400 #endif
1401 #endif
1402 {
1403
1404 int yystate;
1405 int yyn;
1406 int yyresult;
1407 /* Number of tokens to shift before error messages enabled. */
1408 int yyerrstatus;
1409 /* Look-ahead token as an internal (translated) token number. */
1410 int yytoken = 0;
1411 #if YYERROR_VERBOSE
1412 /* Buffer for error messages, and its allocated size. */
1413 char yymsgbuf[128];
1414 char *yymsg = yymsgbuf;
1415 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1416 #endif
1417
1418 /* Three stacks and their tools:
1419 `yyss': related to states,
1420 `yyvs': related to semantic values,
1421 `yyls': related to locations.
1422
1423 Refer to the stacks thru separate pointers, to allow yyoverflow
1424 to reallocate them elsewhere. */
1425
1426 /* The state stack. */
1427 yytype_int16 yyssa[YYINITDEPTH];
1428 yytype_int16 *yyss = yyssa;
1429 yytype_int16 *yyssp;
1430
1431 /* The semantic value stack. */
1432 YYSTYPE yyvsa[YYINITDEPTH];
1433 YYSTYPE *yyvs = yyvsa;
1434 YYSTYPE *yyvsp;
1435
1436
1437
1438 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1439
1440 YYSIZE_T yystacksize = YYINITDEPTH;
1441
1442 /* The variables used to return semantic value and location from the
1443 action routines. */
1444 YYSTYPE yyval;
1445
1446
1447 /* The number of symbols on the RHS of the reduced rule.
1448 Keep to zero when no symbol should be popped. */
1449 int yylen = 0;
1450
1451 YYDPRINTF ((stderr, "Starting parse\n"));
1452
1453 yystate = 0;
1454 yyerrstatus = 0;
1455 yynerrs = 0;
1456 yychar = YYEMPTY; /* Cause a token to be read. */
1457
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. */
1462
1463 yyssp = yyss;
1464 yyvsp = yyvs;
1465
1466 goto yysetstate;
1467
1468 /*------------------------------------------------------------.
1469 | yynewstate -- Push a new state, which is found in yystate. |
1470 `------------------------------------------------------------*/
1471 yynewstate:
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. */
1474 yyssp++;
1475
1476 yysetstate:
1477 *yyssp = yystate;
1478
1479 if (yyss + yystacksize - 1 <= yyssp)
1480 {
1481 /* Get the current used size of the three stacks, in elements. */
1482 YYSIZE_T yysize = yyssp - yyss + 1;
1483
1484 #ifdef yyoverflow
1485 {
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
1488 memory. */
1489 YYSTYPE *yyvs1 = yyvs;
1490 yytype_int16 *yyss1 = yyss;
1491
1492
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),
1500
1501 &yystacksize);
1502
1503 yyss = yyss1;
1504 yyvs = yyvs1;
1505 }
1506 #else /* no yyoverflow */
1507 # ifndef YYSTACK_RELOCATE
1508 goto yyexhaustedlab;
1509 # else
1510 /* Extend the stack our own way. */
1511 if (YYMAXDEPTH <= yystacksize)
1512 goto yyexhaustedlab;
1513 yystacksize *= 2;
1514 if (YYMAXDEPTH < yystacksize)
1515 yystacksize = YYMAXDEPTH;
1516
1517 {
1518 yytype_int16 *yyss1 = yyss;
1519 union yyalloc *yyptr =
1520 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1521 if (! yyptr)
1522 goto yyexhaustedlab;
1523 YYSTACK_RELOCATE (yyss);
1524 YYSTACK_RELOCATE (yyvs);
1525
1526 # undef YYSTACK_RELOCATE
1527 if (yyss1 != yyssa)
1528 YYSTACK_FREE (yyss1);
1529 }
1530 # endif
1531 #endif /* no yyoverflow */
1532
1533 yyssp = yyss + yysize - 1;
1534 yyvsp = yyvs + yysize - 1;
1535
1536
1537 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1538 (unsigned long int) yystacksize));
1539
1540 if (yyss + yystacksize - 1 <= yyssp)
1541 YYABORT;
1542 }
1543
1544 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1545
1546 goto yybackup;
1547
1548 /*-----------.
1549 | yybackup. |
1550 `-----------*/
1551 yybackup:
1552
1553 /* Do appropriate processing given the current state. Read a
1554 look-ahead token if we need one and don't already have one. */
1555
1556 /* First try to decide what to do without reference to look-ahead token. */
1557 yyn = yypact[yystate];
1558 if (yyn == YYPACT_NINF)
1559 goto yydefault;
1560
1561 /* Not known => get a look-ahead token if don't already have one. */
1562
1563 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
1564 if (yychar == YYEMPTY)
1565 {
1566 YYDPRINTF ((stderr, "Reading a token: "));
1567 yychar = YYLEX;
1568 }
1569
1570 if (yychar <= YYEOF)
1571 {
1572 yychar = yytoken = YYEOF;
1573 YYDPRINTF ((stderr, "Now at end of input.\n"));
1574 }
1575 else
1576 {
1577 yytoken = YYTRANSLATE (yychar);
1578 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1579 }
1580
1581 /* If the proper action on seeing token YYTOKEN is to reduce or to
1582 detect an error, take that action. */
1583 yyn += yytoken;
1584 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1585 goto yydefault;
1586 yyn = yytable[yyn];
1587 if (yyn <= 0)
1588 {
1589 if (yyn == 0 || yyn == YYTABLE_NINF)
1590 goto yyerrlab;
1591 yyn = -yyn;
1592 goto yyreduce;
1593 }
1594
1595 if (yyn == YYFINAL)
1596 YYACCEPT;
1597
1598 /* Count tokens shifted since error; after three, turn off error
1599 status. */
1600 if (yyerrstatus)
1601 yyerrstatus--;
1602
1603 /* Shift the look-ahead token. */
1604 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1605
1606 /* Discard the shifted token unless it is eof. */
1607 if (yychar != YYEOF)
1608 yychar = YYEMPTY;
1609
1610 yystate = yyn;
1611 *++yyvsp = yylval;
1612
1613 goto yynewstate;
1614
1615
1616 /*-----------------------------------------------------------.
1617 | yydefault -- do the default action for the current state. |
1618 `-----------------------------------------------------------*/
1619 yydefault:
1620 yyn = yydefact[yystate];
1621 if (yyn == 0)
1622 goto yyerrlab;
1623 goto yyreduce;
1624
1625
1626 /*-----------------------------.
1627 | yyreduce -- Do a reduction. |
1628 `-----------------------------*/
1629 yyreduce:
1630 /* yyn is the number of a rule to reduce with. */
1631 yylen = yyr2[yyn];
1632
1633 /* If YYLEN is nonzero, implement the default value of the action:
1634 `$$ = $1'.
1635
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];
1642
1643
1644 YY_REDUCE_PRINT (yyn);
1645 switch (yyn)
1646 {
1647 case 8:
1648
1649 { zconf_error("unexpected end statement"); ;}
1650 break;
1651
1652 case 9:
1653
1654 { zconf_error("unknown statement \"%s\"", (yyvsp[(2) - (4)].string)); ;}
1655 break;
1656
1657 case 10:
1658
1659 {
1660 zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[(2) - (4)].id)->name);
1661 ;}
1662 break;
1663
1664 case 11:
1665
1666 { zconf_error("invalid statement"); ;}
1667 break;
1668
1669 case 25:
1670
1671 { zconf_error("unknown option \"%s\"", (yyvsp[(1) - (3)].string)); ;}
1672 break;
1673
1674 case 26:
1675
1676 { zconf_error("invalid option"); ;}
1677 break;
1678
1679 case 27:
1680
1681 {
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));
1686 ;}
1687 break;
1688
1689 case 28:
1690
1691 {
1692 menu_end_entry();
1693 printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
1694 ;}
1695 break;
1696
1697 case 29:
1698
1699 {
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));
1704 ;}
1705 break;
1706
1707 case 30:
1708
1709 {
1710 if (current_entry->prompt)
1711 current_entry->prompt->type = P_MENU;
1712 else
1713 zconfprint("warning: menuconfig statement without prompt");
1714 menu_end_entry();
1715 printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
1716 ;}
1717 break;
1718
1719 case 38:
1720
1721 {
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);
1726 ;}
1727 break;
1728
1729 case 39:
1730
1731 {
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());
1734 ;}
1735 break;
1736
1737 case 40:
1738
1739 {
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);
1746 ;}
1747 break;
1748
1749 case 41:
1750
1751 {
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());
1754 ;}
1755 break;
1756
1757 case 42:
1758
1759 {
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());
1762 ;}
1763 break;
1764
1765 case 45:
1766
1767 {
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));
1771 else
1772 zconfprint("warning: ignoring unknown option %s", (yyvsp[(2) - (3)].string));
1773 free((yyvsp[(2) - (3)].string));
1774 ;}
1775 break;
1776
1777 case 46:
1778
1779 { (yyval.string) = NULL; ;}
1780 break;
1781
1782 case 47:
1783
1784 { (yyval.string) = (yyvsp[(2) - (2)].string); ;}
1785 break;
1786
1787 case 48:
1788
1789 {
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());
1795 ;}
1796 break;
1797
1798 case 49:
1799
1800 {
1801 (yyval.menu) = menu_add_menu();
1802 ;}
1803 break;
1804
1805 case 50:
1806
1807 {
1808 if (zconf_endtoken((yyvsp[(1) - (1)].id), T_CHOICE, T_ENDCHOICE)) {
1809 menu_end_menu();
1810 printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
1811 }
1812 ;}
1813 break;
1814
1815 case 58:
1816
1817 {
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());
1820 ;}
1821 break;
1822
1823 case 59:
1824
1825 {
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);
1831 } else
1832 YYERROR;
1833 ;}
1834 break;
1835
1836 case 60:
1837
1838 {
1839 current_entry->sym->flags |= SYMBOL_OPTIONAL;
1840 printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
1841 ;}
1842 break;
1843
1844 case 61:
1845
1846 {
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());
1851 } else
1852 YYERROR;
1853 ;}
1854 break;
1855
1856 case 64:
1857
1858 {
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();
1863 ;}
1864 break;
1865
1866 case 65:
1867
1868 {
1869 if (zconf_endtoken((yyvsp[(1) - (1)].id), T_IF, T_ENDIF)) {
1870 menu_end_menu();
1871 printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
1872 }
1873 ;}
1874 break;
1875
1876 case 71:
1877
1878 {
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());
1882 ;}
1883 break;
1884
1885 case 72:
1886
1887 {
1888 (yyval.menu) = menu_add_menu();
1889 ;}
1890 break;
1891
1892 case 73:
1893
1894 {
1895 if (zconf_endtoken((yyvsp[(1) - (1)].id), T_MENU, T_ENDMENU)) {
1896 menu_end_menu();
1897 printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
1898 }
1899 ;}
1900 break;
1901
1902 case 79:
1903
1904 {
1905 printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
1906 zconf_nextfile((yyvsp[(2) - (3)].string));
1907 ;}
1908 break;
1909
1910 case 80:
1911
1912 {
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());
1916 ;}
1917 break;
1918
1919 case 81:
1920
1921 {
1922 menu_end_entry();
1923 ;}
1924 break;
1925
1926 case 82:
1927
1928 {
1929 printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
1930 zconf_starthelp();
1931 ;}
1932 break;
1933
1934 case 83:
1935
1936 {
1937 current_entry->help = (yyvsp[(2) - (2)].string);
1938 ;}
1939 break;
1940
1941 case 88:
1942
1943 {
1944 menu_add_dep((yyvsp[(3) - (4)].expr));
1945 printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
1946 ;}
1947 break;
1948
1949 case 90:
1950
1951 {
1952 menu_add_prompt(P_PROMPT, (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].expr));
1953 ;}
1954 break;
1955
1956 case 93:
1957
1958 { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
1959 break;
1960
1961 case 94:
1962
1963 { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
1964 break;
1965
1966 case 95:
1967
1968 { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
1969 break;
1970
1971 case 98:
1972
1973 { (yyval.expr) = NULL; ;}
1974 break;
1975
1976 case 99:
1977
1978 { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;}
1979 break;
1980
1981 case 100:
1982
1983 { (yyval.expr) = expr_alloc_symbol((yyvsp[(1) - (1)].symbol)); ;}
1984 break;
1985
1986 case 101:
1987
1988 { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;}
1989 break;
1990
1991 case 102:
1992
1993 { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;}
1994 break;
1995
1996 case 103:
1997
1998 { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;}
1999 break;
2000
2001 case 104:
2002
2003 { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); ;}
2004 break;
2005
2006 case 105:
2007
2008 { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
2009 break;
2010
2011 case 106:
2012
2013 { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
2014 break;
2015
2016 case 107:
2017
2018 { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); ;}
2019 break;
2020
2021 case 108:
2022
2023 { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); ;}
2024 break;
2025
2026 case 109:
2027
2028 { (yyval.string) = NULL; ;}
2029 break;
2030
2031
2032 /* Line 1267 of yacc.c. */
2033
2034 default: break;
2035 }
2036 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2037
2038 YYPOPSTACK (yylen);
2039 yylen = 0;
2040 YY_STACK_PRINT (yyss, yyssp);
2041
2042 *++yyvsp = yyval;
2043
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 look-ahead 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 look-ahead 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 if (yyn == YYFINAL)
2184 YYACCEPT;
2185
2186 *++yyvsp = yylval;
2187
2188
2189 /* Shift the error token. */
2190 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2191
2192 yystate = yyn;
2193 goto yynewstate;
2194
2195
2196 /*-------------------------------------.
2197 | yyacceptlab -- YYACCEPT comes here. |
2198 `-------------------------------------*/
2199 yyacceptlab:
2200 yyresult = 0;
2201 goto yyreturn;
2202
2203 /*-----------------------------------.
2204 | yyabortlab -- YYABORT comes here. |
2205 `-----------------------------------*/
2206 yyabortlab:
2207 yyresult = 1;
2208 goto yyreturn;
2209
2210 #ifndef yyoverflow
2211 /*-------------------------------------------------.
2212 | yyexhaustedlab -- memory exhaustion comes here. |
2213 `-------------------------------------------------*/
2214 yyexhaustedlab:
2215 yyerror (YY_("memory exhausted"));
2216 yyresult = 2;
2217 /* Fall through. */
2218 #endif
2219
2220 yyreturn:
2221 if (yychar != YYEOF && yychar != YYEMPTY)
2222 yydestruct ("Cleanup: discarding lookahead",
2223 yytoken, &yylval);
2224 /* Do not reclaim the symbols of the rule which action triggered
2225 this YYABORT or YYACCEPT. */
2226 YYPOPSTACK (yylen);
2227 YY_STACK_PRINT (yyss, yyssp);
2228 while (yyssp != yyss)
2229 {
2230 yydestruct ("Cleanup: popping",
2231 yystos[*yyssp], yyvsp);
2232 YYPOPSTACK (1);
2233 }
2234 #ifndef yyoverflow
2235 if (yyss != yyssa)
2236 YYSTACK_FREE (yyss);
2237 #endif
2238 #if YYERROR_VERBOSE
2239 if (yymsg != yymsgbuf)
2240 YYSTACK_FREE (yymsg);
2241 #endif
2242 /* Make sure YYID is used. */
2243 return YYID (yyresult);
2244 }
2245
2246
2247
2248
2249
2250 void conf_parse(const char *name)
2251 {
2252 struct symbol *sym;
2253 int i;
2254
2255 zconf_initscan(name);
2256
2257 sym_init();
2258 menu_init();
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);
2263
2264 #if YYDEBUG
2265 if (getenv("ZCONF_DEBUG"))
2266 zconfdebug = 1;
2267 #endif
2268 zconfparse();
2269 if (zconfnerrs)
2270 exit(1);
2271 if (!modules_sym->prop) {
2272 struct property *prop;
2273
2274 prop = prop_alloc(P_DEFAULT, modules_sym);
2275 prop->expr = expr_alloc_symbol(sym_lookup("MODULES", 0));
2276 }
2277 menu_finalize(&rootmenu);
2278 for_all_symbols(i, sym) {
2279 if (sym_check_deps(sym))
2280 zconfnerrs++;
2281 }
2282 if (zconfnerrs)
2283 exit(1);
2284 sym_set_change_count(1);
2285 }
2286
2287 const char *zconf_tokenname(int token)
2288 {
2289 switch (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";
2297 }
2298 return "<token>";
2299 }
2300
2301 static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken)
2302 {
2303 if (id->token != endtoken) {
2304 zconf_error("unexpected '%s' within %s block",
2305 kconf_id_strings + id->name, zconf_tokenname(starttoken));
2306 zconfnerrs++;
2307 return false;
2308 }
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));
2315 zconfnerrs++;
2316 return false;
2317 }
2318 return true;
2319 }
2320
2321 static void zconfprint(const char *err, ...)
2322 {
2323 va_list ap;
2324
2325 fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
2326 va_start(ap, err);
2327 vfprintf(stderr, err, ap);
2328 va_end(ap);
2329 fprintf(stderr, "\n");
2330 }
2331
2332 static void zconf_error(const char *err, ...)
2333 {
2334 va_list ap;
2335
2336 zconfnerrs++;
2337 fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
2338 va_start(ap, err);
2339 vfprintf(stderr, err, ap);
2340 va_end(ap);
2341 fprintf(stderr, "\n");
2342 }
2343
2344 static void zconferror(const char *err)
2345 {
2346 #if YYDEBUG
2347 fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
2348 #endif
2349 }
2350
2351 void print_quoted_string(FILE *out, const char *str)
2352 {
2353 const char *p;
2354 int len;
2355
2356 putc('"', out);
2357 while ((p = strchr(str, '"'))) {
2358 len = p - str;
2359 if (len)
2360 fprintf(out, "%.*s", len, str);
2361 fputs("\\\"", out);
2362 str = p + 1;
2363 }
2364 fputs(str, out);
2365 putc('"', out);
2366 }
2367
2368 void print_symbol(FILE *out, struct menu *menu)
2369 {
2370 struct symbol *sym = menu->sym;
2371 struct property *prop;
2372
2373 if (sym_is_choice(sym))
2374 fprintf(out, "choice\n");
2375 else
2376 fprintf(out, "config %s\n", sym->name);
2377 switch (sym->type) {
2378 case S_BOOLEAN:
2379 fputs(" boolean\n", out);
2380 break;
2381 case S_TRISTATE:
2382 fputs(" tristate\n", out);
2383 break;
2384 case S_STRING:
2385 fputs(" string\n", out);
2386 break;
2387 case S_INT:
2388 fputs(" integer\n", out);
2389 break;
2390 case S_HEX:
2391 fputs(" hex\n", out);
2392 break;
2393 default:
2394 fputs(" ???\n", out);
2395 break;
2396 }
2397 for (prop = sym->prop; prop; prop = prop->next) {
2398 if (prop->menu != menu)
2399 continue;
2400 switch (prop->type) {
2401 case P_PROMPT:
2402 fputs(" prompt ", out);
2403 print_quoted_string(out, prop->text);
2404 if (!expr_is_yes(prop->visible.expr)) {
2405 fputs(" if ", out);
2406 expr_fprint(prop->visible.expr, out);
2407 }
2408 fputc('\n', out);
2409 break;
2410 case P_DEFAULT:
2411 fputs( " default ", out);
2412 expr_fprint(prop->expr, out);
2413 if (!expr_is_yes(prop->visible.expr)) {
2414 fputs(" if ", out);
2415 expr_fprint(prop->visible.expr, out);
2416 }
2417 fputc('\n', out);
2418 break;
2419 case P_CHOICE:
2420 fputs(" #choice value\n", out);
2421 break;
2422 default:
2423 fprintf(out, " unknown prop %d!\n", prop->type);
2424 break;
2425 }
2426 }
2427 if (menu->help) {
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);
2432 }
2433 fputc('\n', out);
2434 }
2435
2436 void zconfdump(FILE *out)
2437 {
2438 struct property *prop;
2439 struct symbol *sym;
2440 struct menu *menu;
2441
2442 menu = rootmenu.list;
2443 while (menu) {
2444 if ((sym = menu->sym))
2445 print_symbol(out, menu);
2446 else if ((prop = menu->prompt)) {
2447 switch (prop->type) {
2448 case P_COMMENT:
2449 fputs("\ncomment ", out);
2450 print_quoted_string(out, prop->text);
2451 fputs("\n", out);
2452 break;
2453 case P_MENU:
2454 fputs("\nmenu ", out);
2455 print_quoted_string(out, prop->text);
2456 fputs("\n", out);
2457 break;
2458 default:
2459 ;
2460 }
2461 if (!expr_is_yes(prop->visible.expr)) {
2462 fputs(" depends ", out);
2463 expr_fprint(prop->visible.expr, out);
2464 fputc('\n', out);
2465 }
2466 fputs("\n", out);
2467 }
2468
2469 if (menu->list)
2470 menu = menu->list;
2471 else if (menu->next)
2472 menu = menu->next;
2473 else while ((menu = menu->parent)) {
2474 if (menu->prompt && menu->prompt->type == P_MENU)
2475 fputs("\nendmenu\n", out);
2476 if (menu->next) {
2477 menu = menu->next;
2478 break;
2479 }
2480 }
2481 }
2482 }
2483
2484 #include "lex.zconf.c"
2485 #include "util.c"
2486 #include "confdata.c"
2487 #include "expr.c"
2488 #include "symbol.c"
2489 #include "menu.c"
2490
This page took 0.084439 seconds and 5 git commands to generate.