OpenCores
URL https://opencores.org/ocsvn/core_arm/core_arm/trunk

Subversion Repositories core_arm

[/] [core_arm/] [trunk/] [build/] [config/] [zconf.tab.c] - Blame information for rev 4

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.