Linux 2.6.31-rc1
[linux-2.6/next.git] / scripts / genksyms / parse.c_shipped
blobeaee44e66a43cba6686775dbd7ce628a2836d1d1
1 /* A Bison parser, made by GNU Bison 2.3.  */
3 /* Skeleton implementation for Bison's Yacc-like parsers in C
5    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6    Free Software Foundation, Inc.
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 2, or (at your option)
11    any later version.
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 51 Franklin Street, Fifth Floor,
21    Boston, MA 02110-1301, USA.  */
23 /* As a special exception, you may create a larger work that contains
24    part or all of the Bison parser skeleton and distribute that work
25    under terms of your choice, so long as that work isn't itself a
26    parser generator using the skeleton or a modified version thereof
27    as a parser skeleton.  Alternatively, if you modify or redistribute
28    the parser skeleton itself, you may (at your option) remove this
29    special exception, which will cause the skeleton and the resulting
30    Bison output files to be licensed under the GNU General Public
31    License without this special exception.
33    This special exception was added by the Free Software Foundation in
34    version 2.2 of Bison.  */
36 /* C LALR(1) parser skeleton written by Richard Stallman, by
37    simplifying the original so-called "semantic" parser.  */
39 /* All symbols defined below should begin with yy or YY, to avoid
40    infringing on user name space.  This should be done even for local
41    variables, as they might otherwise be expanded by user macros.
42    There are some unavoidable exceptions within include files to
43    define necessary library symbols; they are noted "INFRINGES ON
44    USER NAME SPACE" below.  */
46 /* Identify Bison output.  */
47 #define YYBISON 1
49 /* Bison version.  */
50 #define YYBISON_VERSION "2.3"
52 /* Skeleton name.  */
53 #define YYSKELETON_NAME "yacc.c"
55 /* Pure parsers.  */
56 #define YYPURE 0
58 /* Using locations.  */
59 #define YYLSP_NEEDED 0
63 /* Tokens.  */
64 #ifndef YYTOKENTYPE
65 # define YYTOKENTYPE
66    /* Put the tokens into the symbol table, so that GDB and other debuggers
67       know about them.  */
68    enum yytokentype {
69      ASM_KEYW = 258,
70      ATTRIBUTE_KEYW = 259,
71      AUTO_KEYW = 260,
72      BOOL_KEYW = 261,
73      CHAR_KEYW = 262,
74      CONST_KEYW = 263,
75      DOUBLE_KEYW = 264,
76      ENUM_KEYW = 265,
77      EXTERN_KEYW = 266,
78      EXTENSION_KEYW = 267,
79      FLOAT_KEYW = 268,
80      INLINE_KEYW = 269,
81      INT_KEYW = 270,
82      LONG_KEYW = 271,
83      REGISTER_KEYW = 272,
84      RESTRICT_KEYW = 273,
85      SHORT_KEYW = 274,
86      SIGNED_KEYW = 275,
87      STATIC_KEYW = 276,
88      STRUCT_KEYW = 277,
89      TYPEDEF_KEYW = 278,
90      UNION_KEYW = 279,
91      UNSIGNED_KEYW = 280,
92      VOID_KEYW = 281,
93      VOLATILE_KEYW = 282,
94      TYPEOF_KEYW = 283,
95      EXPORT_SYMBOL_KEYW = 284,
96      ASM_PHRASE = 285,
97      ATTRIBUTE_PHRASE = 286,
98      BRACE_PHRASE = 287,
99      BRACKET_PHRASE = 288,
100      EXPRESSION_PHRASE = 289,
101      CHAR = 290,
102      DOTS = 291,
103      IDENT = 292,
104      INT = 293,
105      REAL = 294,
106      STRING = 295,
107      TYPE = 296,
108      OTHER = 297,
109      FILENAME = 298
110    };
111 #endif
112 /* Tokens.  */
113 #define ASM_KEYW 258
114 #define ATTRIBUTE_KEYW 259
115 #define AUTO_KEYW 260
116 #define BOOL_KEYW 261
117 #define CHAR_KEYW 262
118 #define CONST_KEYW 263
119 #define DOUBLE_KEYW 264
120 #define ENUM_KEYW 265
121 #define EXTERN_KEYW 266
122 #define EXTENSION_KEYW 267
123 #define FLOAT_KEYW 268
124 #define INLINE_KEYW 269
125 #define INT_KEYW 270
126 #define LONG_KEYW 271
127 #define REGISTER_KEYW 272
128 #define RESTRICT_KEYW 273
129 #define SHORT_KEYW 274
130 #define SIGNED_KEYW 275
131 #define STATIC_KEYW 276
132 #define STRUCT_KEYW 277
133 #define TYPEDEF_KEYW 278
134 #define UNION_KEYW 279
135 #define UNSIGNED_KEYW 280
136 #define VOID_KEYW 281
137 #define VOLATILE_KEYW 282
138 #define TYPEOF_KEYW 283
139 #define EXPORT_SYMBOL_KEYW 284
140 #define ASM_PHRASE 285
141 #define ATTRIBUTE_PHRASE 286
142 #define BRACE_PHRASE 287
143 #define BRACKET_PHRASE 288
144 #define EXPRESSION_PHRASE 289
145 #define CHAR 290
146 #define DOTS 291
147 #define IDENT 292
148 #define INT 293
149 #define REAL 294
150 #define STRING 295
151 #define TYPE 296
152 #define OTHER 297
153 #define FILENAME 298
158 /* Copy the first part of user declarations.  */
159 #line 24 "scripts/genksyms/parse.y"
162 #include <assert.h>
163 #include <malloc.h>
164 #include "genksyms.h"
166 static int is_typedef;
167 static int is_extern;
168 static char *current_name;
169 static struct string_list *decl_spec;
171 static void yyerror(const char *);
173 static inline void
174 remove_node(struct string_list **p)
176   struct string_list *node = *p;
177   *p = node->next;
178   free_node(node);
181 static inline void
182 remove_list(struct string_list **pb, struct string_list **pe)
184   struct string_list *b = *pb, *e = *pe;
185   *pb = e;
186   free_list(b, e);
191 /* Enabling traces.  */
192 #ifndef YYDEBUG
193 # define YYDEBUG 1
194 #endif
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
204 /* Enabling the token table.  */
205 #ifndef YYTOKEN_TABLE
206 # define YYTOKEN_TABLE 0
207 #endif
209 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
210 typedef int YYSTYPE;
211 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
212 # define YYSTYPE_IS_DECLARED 1
213 # define YYSTYPE_IS_TRIVIAL 1
214 #endif
218 /* Copy the second part of user declarations.  */
221 /* Line 216 of yacc.c.  */
222 #line 223 "scripts/genksyms/parse.c"
224 #ifdef short
225 # undef short
226 #endif
228 #ifdef YYTYPE_UINT8
229 typedef YYTYPE_UINT8 yytype_uint8;
230 #else
231 typedef unsigned char yytype_uint8;
232 #endif
234 #ifdef YYTYPE_INT8
235 typedef YYTYPE_INT8 yytype_int8;
236 #elif (defined __STDC__ || defined __C99__FUNC__ \
237      || defined __cplusplus || defined _MSC_VER)
238 typedef signed char yytype_int8;
239 #else
240 typedef short int yytype_int8;
241 #endif
243 #ifdef YYTYPE_UINT16
244 typedef YYTYPE_UINT16 yytype_uint16;
245 #else
246 typedef unsigned short int yytype_uint16;
247 #endif
249 #ifdef YYTYPE_INT16
250 typedef YYTYPE_INT16 yytype_int16;
251 #else
252 typedef short int yytype_int16;
253 #endif
255 #ifndef YYSIZE_T
256 # ifdef __SIZE_TYPE__
257 #  define YYSIZE_T __SIZE_TYPE__
258 # elif defined size_t
259 #  define YYSIZE_T size_t
260 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
261      || defined __cplusplus || defined _MSC_VER)
262 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
263 #  define YYSIZE_T size_t
264 # else
265 #  define YYSIZE_T unsigned int
266 # endif
267 #endif
269 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
271 #ifndef YY_
272 # if YYENABLE_NLS
273 #  if ENABLE_NLS
274 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
275 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
276 #  endif
277 # endif
278 # ifndef YY_
279 #  define YY_(msgid) msgid
280 # endif
281 #endif
283 /* Suppress unused-variable warnings by "using" E.  */
284 #if ! defined lint || defined __GNUC__
285 # define YYUSE(e) ((void) (e))
286 #else
287 # define YYUSE(e) /* empty */
288 #endif
290 /* Identity function, used to suppress warnings about constant conditions.  */
291 #ifndef lint
292 # define YYID(n) (n)
293 #else
294 #if (defined __STDC__ || defined __C99__FUNC__ \
295      || defined __cplusplus || defined _MSC_VER)
296 static int
297 YYID (int i)
298 #else
299 static int
300 YYID (i)
301     int i;
302 #endif
304   return i;
306 #endif
308 #if ! defined yyoverflow || YYERROR_VERBOSE
310 /* The parser invokes alloca or malloc; define the necessary symbols.  */
312 # ifdef YYSTACK_USE_ALLOCA
313 #  if YYSTACK_USE_ALLOCA
314 #   ifdef __GNUC__
315 #    define YYSTACK_ALLOC __builtin_alloca
316 #   elif defined __BUILTIN_VA_ARG_INCR
317 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
318 #   elif defined _AIX
319 #    define YYSTACK_ALLOC __alloca
320 #   elif defined _MSC_VER
321 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
322 #    define alloca _alloca
323 #   else
324 #    define YYSTACK_ALLOC alloca
325 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
326      || defined __cplusplus || defined _MSC_VER)
327 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
328 #     ifndef _STDLIB_H
329 #      define _STDLIB_H 1
330 #     endif
331 #    endif
332 #   endif
333 #  endif
334 # endif
336 # ifdef YYSTACK_ALLOC
337    /* Pacify GCC's `empty if-body' warning.  */
338 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
339 #  ifndef YYSTACK_ALLOC_MAXIMUM
340     /* The OS might guarantee only one guard page at the bottom of the stack,
341        and a page size can be as small as 4096 bytes.  So we cannot safely
342        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
343        to allow for a few compiler-allocated temporary stack slots.  */
344 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
345 #  endif
346 # else
347 #  define YYSTACK_ALLOC YYMALLOC
348 #  define YYSTACK_FREE YYFREE
349 #  ifndef YYSTACK_ALLOC_MAXIMUM
350 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
351 #  endif
352 #  if (defined __cplusplus && ! defined _STDLIB_H \
353        && ! ((defined YYMALLOC || defined malloc) \
354              && (defined YYFREE || defined free)))
355 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
356 #   ifndef _STDLIB_H
357 #    define _STDLIB_H 1
358 #   endif
359 #  endif
360 #  ifndef YYMALLOC
361 #   define YYMALLOC malloc
362 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
363      || defined __cplusplus || defined _MSC_VER)
364 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
365 #   endif
366 #  endif
367 #  ifndef YYFREE
368 #   define YYFREE free
369 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
370      || defined __cplusplus || defined _MSC_VER)
371 void free (void *); /* INFRINGES ON USER NAME SPACE */
372 #   endif
373 #  endif
374 # endif
375 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
378 #if (! defined yyoverflow \
379      && (! defined __cplusplus \
380          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
382 /* A type that is properly aligned for any stack member.  */
383 union yyalloc
385   yytype_int16 yyss;
386   YYSTYPE yyvs;
387   };
389 /* The size of the maximum gap between one aligned stack and the next.  */
390 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
392 /* The size of an array large to enough to hold all stacks, each with
393    N elements.  */
394 # define YYSTACK_BYTES(N) \
395      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
396       + YYSTACK_GAP_MAXIMUM)
398 /* Copy COUNT objects from FROM to TO.  The source and destination do
399    not overlap.  */
400 # ifndef YYCOPY
401 #  if defined __GNUC__ && 1 < __GNUC__
402 #   define YYCOPY(To, From, Count) \
403       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
404 #  else
405 #   define YYCOPY(To, From, Count)              \
406       do                                        \
407         {                                       \
408           YYSIZE_T yyi;                         \
409           for (yyi = 0; yyi < (Count); yyi++)   \
410             (To)[yyi] = (From)[yyi];            \
411         }                                       \
412       while (YYID (0))
413 #  endif
414 # endif
416 /* Relocate STACK from its old location to the new one.  The
417    local variables YYSIZE and YYSTACKSIZE give the old and new number of
418    elements in the stack, and YYPTR gives the new location of the
419    stack.  Advance YYPTR to a properly aligned location for the next
420    stack.  */
421 # define YYSTACK_RELOCATE(Stack)                                        \
422     do                                                                  \
423       {                                                                 \
424         YYSIZE_T yynewbytes;                                            \
425         YYCOPY (&yyptr->Stack, Stack, yysize);                          \
426         Stack = &yyptr->Stack;                                          \
427         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
428         yyptr += yynewbytes / sizeof (*yyptr);                          \
429       }                                                                 \
430     while (YYID (0))
432 #endif
434 /* YYFINAL -- State number of the termination state.  */
435 #define YYFINAL  4
436 /* YYLAST -- Last index in YYTABLE.  */
437 #define YYLAST   523
439 /* YYNTOKENS -- Number of terminals.  */
440 #define YYNTOKENS  53
441 /* YYNNTS -- Number of nonterminals.  */
442 #define YYNNTS  46
443 /* YYNRULES -- Number of rules.  */
444 #define YYNRULES  126
445 /* YYNRULES -- Number of states.  */
446 #define YYNSTATES  178
448 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
449 #define YYUNDEFTOK  2
450 #define YYMAXUTOK   298
452 #define YYTRANSLATE(YYX)                                                \
453   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
455 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
456 static const yytype_uint8 yytranslate[] =
458        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
459        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
460        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
461        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
462       47,    49,    48,     2,    46,     2,     2,     2,     2,     2,
463        2,     2,     2,     2,     2,     2,     2,     2,    52,    44,
464        2,    50,     2,     2,     2,     2,     2,     2,     2,     2,
465        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
466        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
467        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
468        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
469        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
470        2,     2,     2,    51,     2,    45,     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,     1,     2,     3,     4,
484        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
485       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
486       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
487       35,    36,    37,    38,    39,    40,    41,    42,    43
490 #if YYDEBUG
491 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
492    YYRHS.  */
493 static const yytype_uint16 yyprhs[] =
495        0,     0,     3,     5,     8,     9,    12,    13,    18,    19,
496       23,    25,    27,    29,    31,    34,    37,    41,    42,    44,
497       46,    50,    55,    56,    58,    60,    63,    65,    67,    69,
498       71,    73,    75,    77,    79,    81,    87,    92,    95,    98,
499      101,   105,   109,   113,   116,   119,   122,   124,   126,   128,
500      130,   132,   134,   136,   138,   140,   142,   144,   147,   148,
501      150,   152,   155,   157,   159,   161,   163,   166,   168,   170,
502      175,   180,   183,   187,   191,   194,   196,   198,   200,   205,
503      210,   213,   217,   221,   224,   226,   230,   231,   233,   235,
504      239,   242,   245,   247,   248,   250,   252,   257,   262,   265,
505      269,   273,   277,   278,   280,   283,   287,   291,   292,   294,
506      296,   299,   303,   306,   307,   309,   311,   315,   318,   321,
507      323,   326,   327,   330,   333,   334,   336
510 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
511 static const yytype_int8 yyrhs[] =
513       54,     0,    -1,    55,    -1,    54,    55,    -1,    -1,    56,
514       57,    -1,    -1,    12,    23,    58,    60,    -1,    -1,    23,
515       59,    60,    -1,    60,    -1,    84,    -1,    96,    -1,    98,
516       -1,     1,    44,    -1,     1,    45,    -1,    64,    61,    44,
517       -1,    -1,    62,    -1,    63,    -1,    62,    46,    63,    -1,
518       74,    97,    95,    85,    -1,    -1,    65,    -1,    66,    -1,
519       65,    66,    -1,    67,    -1,    68,    -1,     5,    -1,    17,
520       -1,    21,    -1,    11,    -1,    14,    -1,    69,    -1,    73,
521       -1,    28,    47,    65,    48,    49,    -1,    28,    47,    65,
522       49,    -1,    22,    37,    -1,    24,    37,    -1,    10,    37,
523       -1,    22,    37,    87,    -1,    24,    37,    87,    -1,    10,
524       37,    32,    -1,    10,    32,    -1,    22,    87,    -1,    24,
525       87,    -1,     7,    -1,    19,    -1,    15,    -1,    16,    -1,
526       20,    -1,    25,    -1,    13,    -1,     9,    -1,    26,    -1,
527        6,    -1,    41,    -1,    48,    71,    -1,    -1,    72,    -1,
528       73,    -1,    72,    73,    -1,     8,    -1,    27,    -1,    31,
529       -1,    18,    -1,    70,    74,    -1,    75,    -1,    37,    -1,
530       75,    47,    78,    49,    -1,    75,    47,     1,    49,    -1,
531       75,    33,    -1,    47,    74,    49,    -1,    47,     1,    49,
532       -1,    70,    76,    -1,    77,    -1,    37,    -1,    41,    -1,
533       77,    47,    78,    49,    -1,    77,    47,     1,    49,    -1,
534       77,    33,    -1,    47,    76,    49,    -1,    47,     1,    49,
535       -1,    79,    36,    -1,    79,    -1,    80,    46,    36,    -1,
536       -1,    80,    -1,    81,    -1,    80,    46,    81,    -1,    65,
537       82,    -1,    70,    82,    -1,    83,    -1,    -1,    37,    -1,
538       41,    -1,    83,    47,    78,    49,    -1,    83,    47,     1,
539       49,    -1,    83,    33,    -1,    47,    82,    49,    -1,    47,
540        1,    49,    -1,    64,    74,    32,    -1,    -1,    86,    -1,
541       50,    34,    -1,    51,    88,    45,    -1,    51,     1,    45,
542       -1,    -1,    89,    -1,    90,    -1,    89,    90,    -1,    64,
543       91,    44,    -1,     1,    44,    -1,    -1,    92,    -1,    93,
544       -1,    92,    46,    93,    -1,    76,    95,    -1,    37,    94,
545       -1,    94,    -1,    52,    34,    -1,    -1,    95,    31,    -1,
546       30,    44,    -1,    -1,    30,    -1,    29,    47,    37,    49,
547       44,    -1
550 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
551 static const yytype_uint16 yyrline[] =
553        0,   103,   103,   104,   108,   108,   114,   114,   116,   116,
554      118,   119,   120,   121,   122,   123,   127,   141,   142,   146,
555      154,   167,   173,   174,   178,   179,   183,   189,   193,   194,
556      195,   196,   197,   201,   202,   203,   204,   208,   210,   212,
557      216,   223,   230,   239,   240,   241,   245,   246,   247,   248,
558      249,   250,   251,   252,   253,   254,   255,   259,   264,   265,
559      269,   270,   274,   274,   274,   275,   283,   284,   288,   297,
560      299,   301,   303,   305,   312,   313,   317,   318,   319,   321,
561      323,   325,   327,   332,   333,   334,   338,   339,   343,   344,
562      349,   354,   356,   360,   361,   369,   373,   375,   377,   379,
563      381,   386,   395,   396,   401,   406,   407,   411,   412,   416,
564      417,   421,   423,   428,   429,   433,   434,   438,   439,   440,
565      444,   448,   449,   453,   457,   458,   462
567 #endif
569 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
570 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
571    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
572 static const char *const yytname[] =
574   "$end", "error", "$undefined", "ASM_KEYW", "ATTRIBUTE_KEYW",
575   "AUTO_KEYW", "BOOL_KEYW", "CHAR_KEYW", "CONST_KEYW", "DOUBLE_KEYW",
576   "ENUM_KEYW", "EXTERN_KEYW", "EXTENSION_KEYW", "FLOAT_KEYW",
577   "INLINE_KEYW", "INT_KEYW", "LONG_KEYW", "REGISTER_KEYW", "RESTRICT_KEYW",
578   "SHORT_KEYW", "SIGNED_KEYW", "STATIC_KEYW", "STRUCT_KEYW",
579   "TYPEDEF_KEYW", "UNION_KEYW", "UNSIGNED_KEYW", "VOID_KEYW",
580   "VOLATILE_KEYW", "TYPEOF_KEYW", "EXPORT_SYMBOL_KEYW", "ASM_PHRASE",
581   "ATTRIBUTE_PHRASE", "BRACE_PHRASE", "BRACKET_PHRASE",
582   "EXPRESSION_PHRASE", "CHAR", "DOTS", "IDENT", "INT", "REAL", "STRING",
583   "TYPE", "OTHER", "FILENAME", "';'", "'}'", "','", "'('", "'*'", "')'",
584   "'='", "'{'", "':'", "$accept", "declaration_seq", "declaration", "@1",
585   "declaration1", "@2", "@3", "simple_declaration",
586   "init_declarator_list_opt", "init_declarator_list", "init_declarator",
587   "decl_specifier_seq_opt", "decl_specifier_seq", "decl_specifier",
588   "storage_class_specifier", "type_specifier", "simple_type_specifier",
589   "ptr_operator", "cvar_qualifier_seq_opt", "cvar_qualifier_seq",
590   "cvar_qualifier", "declarator", "direct_declarator", "nested_declarator",
591   "direct_nested_declarator", "parameter_declaration_clause",
592   "parameter_declaration_list_opt", "parameter_declaration_list",
593   "parameter_declaration", "m_abstract_declarator",
594   "direct_m_abstract_declarator", "function_definition", "initializer_opt",
595   "initializer", "class_body", "member_specification_opt",
596   "member_specification", "member_declaration",
597   "member_declarator_list_opt", "member_declarator_list",
598   "member_declarator", "member_bitfield_declarator", "attribute_opt",
599   "asm_definition", "asm_phrase_opt", "export_definition", 0
601 #endif
603 # ifdef YYPRINT
604 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
605    token YYLEX-NUM.  */
606 static const yytype_uint16 yytoknum[] =
608        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
609      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
610      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
611      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
612      295,   296,   297,   298,    59,   125,    44,    40,    42,    41,
613       61,   123,    58
615 # endif
617 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
618 static const yytype_uint8 yyr1[] =
620        0,    53,    54,    54,    56,    55,    58,    57,    59,    57,
621       57,    57,    57,    57,    57,    57,    60,    61,    61,    62,
622       62,    63,    64,    64,    65,    65,    66,    66,    67,    67,
623       67,    67,    67,    68,    68,    68,    68,    68,    68,    68,
624       68,    68,    68,    68,    68,    68,    69,    69,    69,    69,
625       69,    69,    69,    69,    69,    69,    69,    70,    71,    71,
626       72,    72,    73,    73,    73,    73,    74,    74,    75,    75,
627       75,    75,    75,    75,    76,    76,    77,    77,    77,    77,
628       77,    77,    77,    78,    78,    78,    79,    79,    80,    80,
629       81,    82,    82,    83,    83,    83,    83,    83,    83,    83,
630       83,    84,    85,    85,    86,    87,    87,    88,    88,    89,
631       89,    90,    90,    91,    91,    92,    92,    93,    93,    93,
632       94,    95,    95,    96,    97,    97,    98
635 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
636 static const yytype_uint8 yyr2[] =
638        0,     2,     1,     2,     0,     2,     0,     4,     0,     3,
639        1,     1,     1,     1,     2,     2,     3,     0,     1,     1,
640        3,     4,     0,     1,     1,     2,     1,     1,     1,     1,
641        1,     1,     1,     1,     1,     5,     4,     2,     2,     2,
642        3,     3,     3,     2,     2,     2,     1,     1,     1,     1,
643        1,     1,     1,     1,     1,     1,     1,     2,     0,     1,
644        1,     2,     1,     1,     1,     1,     2,     1,     1,     4,
645        4,     2,     3,     3,     2,     1,     1,     1,     4,     4,
646        2,     3,     3,     2,     1,     3,     0,     1,     1,     3,
647        2,     2,     1,     0,     1,     1,     4,     4,     2,     3,
648        3,     3,     0,     1,     2,     3,     3,     0,     1,     1,
649        2,     3,     2,     0,     1,     1,     3,     2,     2,     1,
650        2,     0,     2,     2,     0,     1,     5
653 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
654    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
655    means the default is an error.  */
656 static const yytype_uint8 yydefact[] =
658        4,     4,     2,     0,     1,     3,     0,    28,    55,    46,
659       62,    53,     0,    31,     0,    52,    32,    48,    49,    29,
660       65,    47,    50,    30,     0,     8,     0,    51,    54,    63,
661        0,     0,     0,    64,    56,     5,    10,    17,    23,    24,
662       26,    27,    33,    34,    11,    12,    13,    14,    15,    43,
663       39,     6,    37,     0,    44,    22,    38,    45,     0,     0,
664      123,    68,     0,    58,     0,    18,    19,     0,   124,    67,
665       25,    42,    22,    40,     0,   113,     0,     0,   109,     9,
666       17,    41,     0,     0,     0,     0,    57,    59,    60,    16,
667        0,    66,   125,   101,   121,    71,     0,     7,   112,   106,
668       76,    77,     0,     0,     0,   121,    75,     0,   114,   115,
669      119,   105,     0,   110,   124,     0,    36,     0,    73,    72,
670       61,    20,   102,     0,    93,     0,    84,    87,    88,   118,
671        0,    76,     0,   120,    74,   117,    80,     0,   111,     0,
672       35,   126,   122,     0,    21,   103,    70,    94,    56,     0,
673       93,    90,    92,    69,    83,     0,    82,    81,     0,     0,
674      116,   104,     0,    95,     0,    91,    98,     0,    85,    89,
675       79,    78,   100,    99,     0,     0,    97,    96
678 /* YYDEFGOTO[NTERM-NUM].  */
679 static const yytype_int16 yydefgoto[] =
681       -1,     1,     2,     3,    35,    72,    55,    36,    64,    65,
682       66,    75,    38,    39,    40,    41,    42,    67,    86,    87,
683       43,   114,    69,   105,   106,   125,   126,   127,   128,   151,
684      152,    44,   144,   145,    54,    76,    77,    78,   107,   108,
685      109,   110,   122,    45,    94,    46
688 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
689    STATE-NUM.  */
690 #define YYPACT_NINF -134
691 static const yytype_int16 yypact[] =
693     -134,    16,  -134,   312,  -134,  -134,    20,  -134,  -134,  -134,
694     -134,  -134,   -18,  -134,    -3,  -134,  -134,  -134,  -134,  -134,
695     -134,  -134,  -134,  -134,   -26,  -134,   -25,  -134,  -134,  -134,
696       -7,     5,    27,  -134,  -134,  -134,  -134,    46,   482,  -134,
697     -134,  -134,  -134,  -134,  -134,  -134,  -134,  -134,  -134,  -134,
698       -8,  -134,    30,    97,  -134,   482,    30,  -134,   482,     7,
699     -134,  -134,    12,    10,    42,    55,  -134,    46,   -15,    15,
700     -134,  -134,   482,  -134,    25,    26,    47,   145,  -134,  -134,
701       46,  -134,   356,    39,    71,    77,  -134,    10,  -134,  -134,
702       46,  -134,  -134,  -134,  -134,  -134,   193,  -134,  -134,  -134,
703       75,  -134,     6,    95,    43,  -134,    28,    86,    85,  -134,
704     -134,  -134,    88,  -134,   103,    87,  -134,    91,  -134,  -134,
705     -134,  -134,   -23,    90,   401,    94,   101,   102,  -134,  -134,
706       98,  -134,   108,  -134,  -134,   109,  -134,   230,  -134,    26,
707     -134,  -134,  -134,   134,  -134,  -134,  -134,  -134,  -134,     9,
708       48,  -134,    35,  -134,  -134,   445,  -134,  -134,   125,   126,
709     -134,  -134,   128,  -134,   129,  -134,  -134,   267,  -134,  -134,
710     -134,  -134,  -134,  -134,   130,   131,  -134,  -134
713 /* YYPGOTO[NTERM-NUM].  */
714 static const yytype_int16 yypgoto[] =
716     -134,  -134,   180,  -134,  -134,  -134,  -134,   -33,  -134,  -134,
717       93,     0,   -58,   -37,  -134,  -134,  -134,   -73,  -134,  -134,
718      -54,   -32,  -134,   -81,  -134,  -133,  -134,  -134,    29,   -50,
719     -134,  -134,  -134,  -134,   -20,  -134,  -134,   110,  -134,  -134,
720       49,    96,    80,  -134,  -134,  -134
723 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
724    positive, shift that token.  If negative, reduce the rule which
725    number is the opposite.  If zero, do what YYDEFACT says.
726    If YYTABLE_NINF, syntax error.  */
727 #define YYTABLE_NINF -109
728 static const yytype_int16 yytable[] =
730       82,    70,   104,    37,   159,    68,    57,   130,   142,    88,
731      162,    52,    56,    84,    49,    92,     4,    93,    10,    50,
732       51,   132,    79,   134,    71,    53,    53,   143,    20,   104,
733       85,   104,    73,   120,   175,    91,    81,    29,   124,    97,
734       58,    33,   -93,   131,    83,    70,   147,   101,    95,    61,
735      163,   150,    59,   102,    63,    80,   149,    63,   -93,    62,
736       63,   136,    96,   100,    47,    48,   104,   101,   166,    98,
737       99,    60,    80,   102,    63,   137,   150,   150,   103,   124,
738      131,    53,   167,    61,   101,   147,    89,    70,   117,   163,
739      102,    63,   111,    62,    63,   149,    63,   124,    74,   164,
740      165,    90,     7,     8,     9,    10,    11,    12,    13,   124,
741       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
742      118,    26,    27,    28,    29,    30,   119,   103,    33,   133,
743      138,   139,    98,    92,   -22,   141,   140,   154,    34,   146,
744      142,   -22,  -107,   153,   -22,   -22,   112,   156,   155,   -22,
745        7,     8,     9,    10,    11,    12,    13,   157,    15,    16,
746       17,    18,    19,    20,    21,    22,    23,    24,   161,    26,
747       27,    28,    29,    30,   170,   171,    33,   172,   173,   176,
748      177,     5,   -22,   121,   169,   135,    34,   113,   160,   -22,
749     -108,     0,   -22,   -22,   123,     0,   129,   -22,     7,     8,
750        9,    10,    11,    12,    13,     0,    15,    16,    17,    18,
751       19,    20,    21,    22,    23,    24,     0,    26,    27,    28,
752       29,    30,     0,     0,    33,     0,     0,     0,     0,   -86,
753        0,   158,     0,     0,    34,     7,     8,     9,    10,    11,
754       12,    13,   -86,    15,    16,    17,    18,    19,    20,    21,
755       22,    23,    24,     0,    26,    27,    28,    29,    30,     0,
756        0,    33,     0,     0,     0,     0,   -86,     0,   174,     0,
757        0,    34,     7,     8,     9,    10,    11,    12,    13,   -86,
758       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
759        0,    26,    27,    28,    29,    30,     0,     0,    33,     0,
760        0,     0,     0,   -86,     0,     0,     0,     0,    34,     0,
761        0,     0,     0,     6,     0,     0,   -86,     7,     8,     9,
762       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
763       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
764       30,    31,    32,    33,     0,     0,     0,     0,     0,   -22,
765        0,     0,     0,    34,     0,     0,   -22,     0,     0,   -22,
766      -22,     7,     8,     9,    10,    11,    12,    13,     0,    15,
767       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
768       26,    27,    28,    29,    30,     0,     0,    33,     0,     0,
769        0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
770        0,     0,     0,     0,   115,   116,     7,     8,     9,    10,
771       11,    12,    13,     0,    15,    16,    17,    18,    19,    20,
772       21,    22,    23,    24,     0,    26,    27,    28,    29,    30,
773        0,     0,    33,     0,     0,     0,     0,     0,   147,     0,
774        0,     0,   148,     0,     0,     0,     0,     0,   149,    63,
775        7,     8,     9,    10,    11,    12,    13,     0,    15,    16,
776       17,    18,    19,    20,    21,    22,    23,    24,     0,    26,
777       27,    28,    29,    30,     0,     0,    33,     0,     0,     0,
778        0,   168,     0,     0,     0,     0,    34,     7,     8,     9,
779       10,    11,    12,    13,     0,    15,    16,    17,    18,    19,
780       20,    21,    22,    23,    24,     0,    26,    27,    28,    29,
781       30,     0,     0,    33,     0,     0,     0,     0,     0,     0,
782        0,     0,     0,    34
785 static const yytype_int16 yycheck[] =
787       58,    38,    75,     3,   137,    37,    26,     1,    31,    63,
788        1,    37,    37,     1,    32,    30,     0,    32,     8,    37,
789       23,   102,    55,   104,    32,    51,    51,    50,    18,   102,
790       62,   104,    52,    87,   167,    67,    56,    27,    96,    72,
791       47,    31,    33,    37,    37,    82,    37,    41,    33,    37,
792       41,   124,    47,    47,    48,    55,    47,    48,    49,    47,
793       48,    33,    47,    37,    44,    45,   139,    41,    33,    44,
794       45,    44,    72,    47,    48,    47,   149,   150,    52,   137,
795       37,    51,    47,    37,    41,    37,    44,   124,    49,    41,
796       47,    48,    45,    47,    48,    47,    48,   155,     1,   149,
797      150,    46,     5,     6,     7,     8,     9,    10,    11,   167,
798       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
799       49,    24,    25,    26,    27,    28,    49,    52,    31,    34,
800       44,    46,    44,    30,    37,    44,    49,    36,    41,    49,
801       31,    44,    45,    49,    47,    48,     1,    49,    46,    52,
802        5,     6,     7,     8,     9,    10,    11,    49,    13,    14,
803       15,    16,    17,    18,    19,    20,    21,    22,    34,    24,
804       25,    26,    27,    28,    49,    49,    31,    49,    49,    49,
805       49,     1,    37,    90,   155,   105,    41,    77,   139,    44,
806       45,    -1,    47,    48,     1,    -1,   100,    52,     5,     6,
807        7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
808       17,    18,    19,    20,    21,    22,    -1,    24,    25,    26,
809       27,    28,    -1,    -1,    31,    -1,    -1,    -1,    -1,    36,
810       -1,     1,    -1,    -1,    41,     5,     6,     7,     8,     9,
811       10,    11,    49,    13,    14,    15,    16,    17,    18,    19,
812       20,    21,    22,    -1,    24,    25,    26,    27,    28,    -1,
813       -1,    31,    -1,    -1,    -1,    -1,    36,    -1,     1,    -1,
814       -1,    41,     5,     6,     7,     8,     9,    10,    11,    49,
815       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
816       -1,    24,    25,    26,    27,    28,    -1,    -1,    31,    -1,
817       -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    41,    -1,
818       -1,    -1,    -1,     1,    -1,    -1,    49,     5,     6,     7,
819        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
820       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
821       28,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
822       -1,    -1,    -1,    41,    -1,    -1,    44,    -1,    -1,    47,
823       48,     5,     6,     7,     8,     9,    10,    11,    -1,    13,
824       14,    15,    16,    17,    18,    19,    20,    21,    22,    -1,
825       24,    25,    26,    27,    28,    -1,    -1,    31,    -1,    -1,
826       -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,
827       -1,    -1,    -1,    -1,    48,    49,     5,     6,     7,     8,
828        9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
829       19,    20,    21,    22,    -1,    24,    25,    26,    27,    28,
830       -1,    -1,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
831       -1,    -1,    41,    -1,    -1,    -1,    -1,    -1,    47,    48,
832        5,     6,     7,     8,     9,    10,    11,    -1,    13,    14,
833       15,    16,    17,    18,    19,    20,    21,    22,    -1,    24,
834       25,    26,    27,    28,    -1,    -1,    31,    -1,    -1,    -1,
835       -1,    36,    -1,    -1,    -1,    -1,    41,     5,     6,     7,
836        8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
837       18,    19,    20,    21,    22,    -1,    24,    25,    26,    27,
838       28,    -1,    -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,
839       -1,    -1,    -1,    41
842 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
843    symbol of state STATE-NUM.  */
844 static const yytype_uint8 yystos[] =
846        0,    54,    55,    56,     0,    55,     1,     5,     6,     7,
847        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
848       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
849       28,    29,    30,    31,    41,    57,    60,    64,    65,    66,
850       67,    68,    69,    73,    84,    96,    98,    44,    45,    32,
851       37,    23,    37,    51,    87,    59,    37,    87,    47,    47,
852       44,    37,    47,    48,    61,    62,    63,    70,    74,    75,
853       66,    32,    58,    87,     1,    64,    88,    89,    90,    60,
854       64,    87,    65,    37,     1,    74,    71,    72,    73,    44,
855       46,    74,    30,    32,    97,    33,    47,    60,    44,    45,
856       37,    41,    47,    52,    70,    76,    77,    91,    92,    93,
857       94,    45,     1,    90,    74,    48,    49,    49,    49,    49,
858       73,    63,    95,     1,    65,    78,    79,    80,    81,    94,
859        1,    37,    76,    34,    76,    95,    33,    47,    44,    46,
860       49,    44,    31,    50,    85,    86,    49,    37,    41,    47,
861       70,    82,    83,    49,    36,    46,    49,    49,     1,    78,
862       93,    34,     1,    41,    82,    82,    33,    47,    36,    81,
863       49,    49,    49,    49,     1,    78,    49,    49
866 #define yyerrok         (yyerrstatus = 0)
867 #define yyclearin       (yychar = YYEMPTY)
868 #define YYEMPTY         (-2)
869 #define YYEOF           0
871 #define YYACCEPT        goto yyacceptlab
872 #define YYABORT         goto yyabortlab
873 #define YYERROR         goto yyerrorlab
876 /* Like YYERROR except do call yyerror.  This remains here temporarily
877    to ease the transition to the new meaning of YYERROR, for GCC.
878    Once GCC version 2 has supplanted version 1, this can go.  */
880 #define YYFAIL          goto yyerrlab
882 #define YYRECOVERING()  (!!yyerrstatus)
884 #define YYBACKUP(Token, Value)                                  \
885 do                                                              \
886   if (yychar == YYEMPTY && yylen == 1)                          \
887     {                                                           \
888       yychar = (Token);                                         \
889       yylval = (Value);                                         \
890       yytoken = YYTRANSLATE (yychar);                           \
891       YYPOPSTACK (1);                                           \
892       goto yybackup;                                            \
893     }                                                           \
894   else                                                          \
895     {                                                           \
896       yyerror (YY_("syntax error: cannot back up")); \
897       YYERROR;                                                  \
898     }                                                           \
899 while (YYID (0))
902 #define YYTERROR        1
903 #define YYERRCODE       256
906 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
907    If N is 0, then set CURRENT to the empty location which ends
908    the previous symbol: RHS[0] (always defined).  */
910 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
911 #ifndef YYLLOC_DEFAULT
912 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
913     do                                                                  \
914       if (YYID (N))                                                    \
915         {                                                               \
916           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
917           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
918           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
919           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
920         }                                                               \
921       else                                                              \
922         {                                                               \
923           (Current).first_line   = (Current).last_line   =              \
924             YYRHSLOC (Rhs, 0).last_line;                                \
925           (Current).first_column = (Current).last_column =              \
926             YYRHSLOC (Rhs, 0).last_column;                              \
927         }                                                               \
928     while (YYID (0))
929 #endif
932 /* YY_LOCATION_PRINT -- Print the location on the stream.
933    This macro was not mandated originally: define only if we know
934    we won't break user code: when these are the locations we know.  */
936 #ifndef YY_LOCATION_PRINT
937 # if YYLTYPE_IS_TRIVIAL
938 #  define YY_LOCATION_PRINT(File, Loc)                  \
939      fprintf (File, "%d.%d-%d.%d",                      \
940               (Loc).first_line, (Loc).first_column,     \
941               (Loc).last_line,  (Loc).last_column)
942 # else
943 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
944 # endif
945 #endif
948 /* YYLEX -- calling `yylex' with the right arguments.  */
950 #ifdef YYLEX_PARAM
951 # define YYLEX yylex (YYLEX_PARAM)
952 #else
953 # define YYLEX yylex ()
954 #endif
956 /* Enable debugging if requested.  */
957 #if YYDEBUG
959 # ifndef YYFPRINTF
960 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
961 #  define YYFPRINTF fprintf
962 # endif
964 # define YYDPRINTF(Args)                        \
965 do {                                            \
966   if (yydebug)                                  \
967     YYFPRINTF Args;                             \
968 } while (YYID (0))
970 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
971 do {                                                                      \
972   if (yydebug)                                                            \
973     {                                                                     \
974       YYFPRINTF (stderr, "%s ", Title);                                   \
975       yy_symbol_print (stderr,                                            \
976                   Type, Value); \
977       YYFPRINTF (stderr, "\n");                                           \
978     }                                                                     \
979 } while (YYID (0))
982 /*--------------------------------.
983 | Print this symbol on YYOUTPUT.  |
984 `--------------------------------*/
986 /*ARGSUSED*/
987 #if (defined __STDC__ || defined __C99__FUNC__ \
988      || defined __cplusplus || defined _MSC_VER)
989 static void
990 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
991 #else
992 static void
993 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
994     FILE *yyoutput;
995     int yytype;
996     YYSTYPE const * const yyvaluep;
997 #endif
999   if (!yyvaluep)
1000     return;
1001 # ifdef YYPRINT
1002   if (yytype < YYNTOKENS)
1003     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1004 # else
1005   YYUSE (yyoutput);
1006 # endif
1007   switch (yytype)
1008     {
1009       default:
1010         break;
1011     }
1015 /*--------------------------------.
1016 | Print this symbol on YYOUTPUT.  |
1017 `--------------------------------*/
1019 #if (defined __STDC__ || defined __C99__FUNC__ \
1020      || defined __cplusplus || defined _MSC_VER)
1021 static void
1022 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1023 #else
1024 static void
1025 yy_symbol_print (yyoutput, yytype, yyvaluep)
1026     FILE *yyoutput;
1027     int yytype;
1028     YYSTYPE const * const yyvaluep;
1029 #endif
1031   if (yytype < YYNTOKENS)
1032     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1033   else
1034     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1036   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1037   YYFPRINTF (yyoutput, ")");
1040 /*------------------------------------------------------------------.
1041 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1042 | TOP (included).                                                   |
1043 `------------------------------------------------------------------*/
1045 #if (defined __STDC__ || defined __C99__FUNC__ \
1046      || defined __cplusplus || defined _MSC_VER)
1047 static void
1048 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
1049 #else
1050 static void
1051 yy_stack_print (bottom, top)
1052     yytype_int16 *bottom;
1053     yytype_int16 *top;
1054 #endif
1056   YYFPRINTF (stderr, "Stack now");
1057   for (; bottom <= top; ++bottom)
1058     YYFPRINTF (stderr, " %d", *bottom);
1059   YYFPRINTF (stderr, "\n");
1062 # define YY_STACK_PRINT(Bottom, Top)                            \
1063 do {                                                            \
1064   if (yydebug)                                                  \
1065     yy_stack_print ((Bottom), (Top));                           \
1066 } while (YYID (0))
1069 /*------------------------------------------------.
1070 | Report that the YYRULE is going to be reduced.  |
1071 `------------------------------------------------*/
1073 #if (defined __STDC__ || defined __C99__FUNC__ \
1074      || defined __cplusplus || defined _MSC_VER)
1075 static void
1076 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
1077 #else
1078 static void
1079 yy_reduce_print (yyvsp, yyrule)
1080     YYSTYPE *yyvsp;
1081     int yyrule;
1082 #endif
1084   int yynrhs = yyr2[yyrule];
1085   int yyi;
1086   unsigned long int yylno = yyrline[yyrule];
1087   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1088              yyrule - 1, yylno);
1089   /* The symbols being reduced.  */
1090   for (yyi = 0; yyi < yynrhs; yyi++)
1091     {
1092       fprintf (stderr, "   $%d = ", yyi + 1);
1093       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1094                        &(yyvsp[(yyi + 1) - (yynrhs)])
1095                                        );
1096       fprintf (stderr, "\n");
1097     }
1100 # define YY_REDUCE_PRINT(Rule)          \
1101 do {                                    \
1102   if (yydebug)                          \
1103     yy_reduce_print (yyvsp, Rule); \
1104 } while (YYID (0))
1106 /* Nonzero means print parse trace.  It is left uninitialized so that
1107    multiple parsers can coexist.  */
1108 int yydebug;
1109 #else /* !YYDEBUG */
1110 # define YYDPRINTF(Args)
1111 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1112 # define YY_STACK_PRINT(Bottom, Top)
1113 # define YY_REDUCE_PRINT(Rule)
1114 #endif /* !YYDEBUG */
1117 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1118 #ifndef YYINITDEPTH
1119 # define YYINITDEPTH 200
1120 #endif
1122 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1123    if the built-in stack extension method is used).
1125    Do not make this value too large; the results are undefined if
1126    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1127    evaluated with infinite-precision integer arithmetic.  */
1129 #ifndef YYMAXDEPTH
1130 # define YYMAXDEPTH 10000
1131 #endif
1135 #if YYERROR_VERBOSE
1137 # ifndef yystrlen
1138 #  if defined __GLIBC__ && defined _STRING_H
1139 #   define yystrlen strlen
1140 #  else
1141 /* Return the length of YYSTR.  */
1142 #if (defined __STDC__ || defined __C99__FUNC__ \
1143      || defined __cplusplus || defined _MSC_VER)
1144 static YYSIZE_T
1145 yystrlen (const char *yystr)
1146 #else
1147 static YYSIZE_T
1148 yystrlen (yystr)
1149     const char *yystr;
1150 #endif
1152   YYSIZE_T yylen;
1153   for (yylen = 0; yystr[yylen]; yylen++)
1154     continue;
1155   return yylen;
1157 #  endif
1158 # endif
1160 # ifndef yystpcpy
1161 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1162 #   define yystpcpy stpcpy
1163 #  else
1164 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1165    YYDEST.  */
1166 #if (defined __STDC__ || defined __C99__FUNC__ \
1167      || defined __cplusplus || defined _MSC_VER)
1168 static char *
1169 yystpcpy (char *yydest, const char *yysrc)
1170 #else
1171 static char *
1172 yystpcpy (yydest, yysrc)
1173     char *yydest;
1174     const char *yysrc;
1175 #endif
1177   char *yyd = yydest;
1178   const char *yys = yysrc;
1180   while ((*yyd++ = *yys++) != '\0')
1181     continue;
1183   return yyd - 1;
1185 #  endif
1186 # endif
1188 # ifndef yytnamerr
1189 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1190    quotes and backslashes, so that it's suitable for yyerror.  The
1191    heuristic is that double-quoting is unnecessary unless the string
1192    contains an apostrophe, a comma, or backslash (other than
1193    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1194    null, do not copy; instead, return the length of what the result
1195    would have been.  */
1196 static YYSIZE_T
1197 yytnamerr (char *yyres, const char *yystr)
1199   if (*yystr == '"')
1200     {
1201       YYSIZE_T yyn = 0;
1202       char const *yyp = yystr;
1204       for (;;)
1205         switch (*++yyp)
1206           {
1207           case '\'':
1208           case ',':
1209             goto do_not_strip_quotes;
1211           case '\\':
1212             if (*++yyp != '\\')
1213               goto do_not_strip_quotes;
1214             /* Fall through.  */
1215           default:
1216             if (yyres)
1217               yyres[yyn] = *yyp;
1218             yyn++;
1219             break;
1221           case '"':
1222             if (yyres)
1223               yyres[yyn] = '\0';
1224             return yyn;
1225           }
1226     do_not_strip_quotes: ;
1227     }
1229   if (! yyres)
1230     return yystrlen (yystr);
1232   return yystpcpy (yyres, yystr) - yyres;
1234 # endif
1236 /* Copy into YYRESULT an error message about the unexpected token
1237    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
1238    including the terminating null byte.  If YYRESULT is null, do not
1239    copy anything; just return the number of bytes that would be
1240    copied.  As a special case, return 0 if an ordinary "syntax error"
1241    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
1242    size calculation.  */
1243 static YYSIZE_T
1244 yysyntax_error (char *yyresult, int yystate, int yychar)
1246   int yyn = yypact[yystate];
1248   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1249     return 0;
1250   else
1251     {
1252       int yytype = YYTRANSLATE (yychar);
1253       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1254       YYSIZE_T yysize = yysize0;
1255       YYSIZE_T yysize1;
1256       int yysize_overflow = 0;
1257       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1258       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1259       int yyx;
1261 # if 0
1262       /* This is so xgettext sees the translatable formats that are
1263          constructed on the fly.  */
1264       YY_("syntax error, unexpected %s");
1265       YY_("syntax error, unexpected %s, expecting %s");
1266       YY_("syntax error, unexpected %s, expecting %s or %s");
1267       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1268       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1269 # endif
1270       char *yyfmt;
1271       char const *yyf;
1272       static char const yyunexpected[] = "syntax error, unexpected %s";
1273       static char const yyexpecting[] = ", expecting %s";
1274       static char const yyor[] = " or %s";
1275       char yyformat[sizeof yyunexpected
1276                     + sizeof yyexpecting - 1
1277                     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1278                        * (sizeof yyor - 1))];
1279       char const *yyprefix = yyexpecting;
1281       /* Start YYX at -YYN if negative to avoid negative indexes in
1282          YYCHECK.  */
1283       int yyxbegin = yyn < 0 ? -yyn : 0;
1285       /* Stay within bounds of both yycheck and yytname.  */
1286       int yychecklim = YYLAST - yyn + 1;
1287       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1288       int yycount = 1;
1290       yyarg[0] = yytname[yytype];
1291       yyfmt = yystpcpy (yyformat, yyunexpected);
1293       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1294         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1295           {
1296             if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1297               {
1298                 yycount = 1;
1299                 yysize = yysize0;
1300                 yyformat[sizeof yyunexpected - 1] = '\0';
1301                 break;
1302               }
1303             yyarg[yycount++] = yytname[yyx];
1304             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1305             yysize_overflow |= (yysize1 < yysize);
1306             yysize = yysize1;
1307             yyfmt = yystpcpy (yyfmt, yyprefix);
1308             yyprefix = yyor;
1309           }
1311       yyf = YY_(yyformat);
1312       yysize1 = yysize + yystrlen (yyf);
1313       yysize_overflow |= (yysize1 < yysize);
1314       yysize = yysize1;
1316       if (yysize_overflow)
1317         return YYSIZE_MAXIMUM;
1319       if (yyresult)
1320         {
1321           /* Avoid sprintf, as that infringes on the user's name space.
1322              Don't have undefined behavior even if the translation
1323              produced a string with the wrong number of "%s"s.  */
1324           char *yyp = yyresult;
1325           int yyi = 0;
1326           while ((*yyp = *yyf) != '\0')
1327             {
1328               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1329                 {
1330                   yyp += yytnamerr (yyp, yyarg[yyi++]);
1331                   yyf += 2;
1332                 }
1333               else
1334                 {
1335                   yyp++;
1336                   yyf++;
1337                 }
1338             }
1339         }
1340       return yysize;
1341     }
1343 #endif /* YYERROR_VERBOSE */
1346 /*-----------------------------------------------.
1347 | Release the memory associated to this symbol.  |
1348 `-----------------------------------------------*/
1350 /*ARGSUSED*/
1351 #if (defined __STDC__ || defined __C99__FUNC__ \
1352      || defined __cplusplus || defined _MSC_VER)
1353 static void
1354 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1355 #else
1356 static void
1357 yydestruct (yymsg, yytype, yyvaluep)
1358     const char *yymsg;
1359     int yytype;
1360     YYSTYPE *yyvaluep;
1361 #endif
1363   YYUSE (yyvaluep);
1365   if (!yymsg)
1366     yymsg = "Deleting";
1367   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1369   switch (yytype)
1370     {
1372       default:
1373         break;
1374     }
1378 /* Prevent warnings from -Wmissing-prototypes.  */
1380 #ifdef YYPARSE_PARAM
1381 #if defined __STDC__ || defined __cplusplus
1382 int yyparse (void *YYPARSE_PARAM);
1383 #else
1384 int yyparse ();
1385 #endif
1386 #else /* ! YYPARSE_PARAM */
1387 #if defined __STDC__ || defined __cplusplus
1388 int yyparse (void);
1389 #else
1390 int yyparse ();
1391 #endif
1392 #endif /* ! YYPARSE_PARAM */
1396 /* The look-ahead symbol.  */
1397 int yychar;
1399 /* The semantic value of the look-ahead symbol.  */
1400 YYSTYPE yylval;
1402 /* Number of syntax errors so far.  */
1403 int yynerrs;
1407 /*----------.
1408 | yyparse.  |
1409 `----------*/
1411 #ifdef YYPARSE_PARAM
1412 #if (defined __STDC__ || defined __C99__FUNC__ \
1413      || defined __cplusplus || defined _MSC_VER)
1415 yyparse (void *YYPARSE_PARAM)
1416 #else
1418 yyparse (YYPARSE_PARAM)
1419     void *YYPARSE_PARAM;
1420 #endif
1421 #else /* ! YYPARSE_PARAM */
1422 #if (defined __STDC__ || defined __C99__FUNC__ \
1423      || defined __cplusplus || defined _MSC_VER)
1425 yyparse (void)
1426 #else
1428 yyparse ()
1430 #endif
1431 #endif
1433   
1434   int yystate;
1435   int yyn;
1436   int yyresult;
1437   /* Number of tokens to shift before error messages enabled.  */
1438   int yyerrstatus;
1439   /* Look-ahead token as an internal (translated) token number.  */
1440   int yytoken = 0;
1441 #if YYERROR_VERBOSE
1442   /* Buffer for error messages, and its allocated size.  */
1443   char yymsgbuf[128];
1444   char *yymsg = yymsgbuf;
1445   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1446 #endif
1448   /* Three stacks and their tools:
1449      `yyss': related to states,
1450      `yyvs': related to semantic values,
1451      `yyls': related to locations.
1453      Refer to the stacks thru separate pointers, to allow yyoverflow
1454      to reallocate them elsewhere.  */
1456   /* The state stack.  */
1457   yytype_int16 yyssa[YYINITDEPTH];
1458   yytype_int16 *yyss = yyssa;
1459   yytype_int16 *yyssp;
1461   /* The semantic value stack.  */
1462   YYSTYPE yyvsa[YYINITDEPTH];
1463   YYSTYPE *yyvs = yyvsa;
1464   YYSTYPE *yyvsp;
1468 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1470   YYSIZE_T yystacksize = YYINITDEPTH;
1472   /* The variables used to return semantic value and location from the
1473      action routines.  */
1474   YYSTYPE yyval;
1477   /* The number of symbols on the RHS of the reduced rule.
1478      Keep to zero when no symbol should be popped.  */
1479   int yylen = 0;
1481   YYDPRINTF ((stderr, "Starting parse\n"));
1483   yystate = 0;
1484   yyerrstatus = 0;
1485   yynerrs = 0;
1486   yychar = YYEMPTY;             /* Cause a token to be read.  */
1488   /* Initialize stack pointers.
1489      Waste one element of value and location stack
1490      so that they stay on the same level as the state stack.
1491      The wasted elements are never initialized.  */
1493   yyssp = yyss;
1494   yyvsp = yyvs;
1496   goto yysetstate;
1498 /*------------------------------------------------------------.
1499 | yynewstate -- Push a new state, which is found in yystate.  |
1500 `------------------------------------------------------------*/
1501  yynewstate:
1502   /* In all cases, when you get here, the value and location stacks
1503      have just been pushed.  So pushing a state here evens the stacks.  */
1504   yyssp++;
1506  yysetstate:
1507   *yyssp = yystate;
1509   if (yyss + yystacksize - 1 <= yyssp)
1510     {
1511       /* Get the current used size of the three stacks, in elements.  */
1512       YYSIZE_T yysize = yyssp - yyss + 1;
1514 #ifdef yyoverflow
1515       {
1516         /* Give user a chance to reallocate the stack.  Use copies of
1517            these so that the &'s don't force the real ones into
1518            memory.  */
1519         YYSTYPE *yyvs1 = yyvs;
1520         yytype_int16 *yyss1 = yyss;
1523         /* Each stack pointer address is followed by the size of the
1524            data in use in that stack, in bytes.  This used to be a
1525            conditional around just the two extra args, but that might
1526            be undefined if yyoverflow is a macro.  */
1527         yyoverflow (YY_("memory exhausted"),
1528                     &yyss1, yysize * sizeof (*yyssp),
1529                     &yyvs1, yysize * sizeof (*yyvsp),
1531                     &yystacksize);
1533         yyss = yyss1;
1534         yyvs = yyvs1;
1535       }
1536 #else /* no yyoverflow */
1537 # ifndef YYSTACK_RELOCATE
1538       goto yyexhaustedlab;
1539 # else
1540       /* Extend the stack our own way.  */
1541       if (YYMAXDEPTH <= yystacksize)
1542         goto yyexhaustedlab;
1543       yystacksize *= 2;
1544       if (YYMAXDEPTH < yystacksize)
1545         yystacksize = YYMAXDEPTH;
1547       {
1548         yytype_int16 *yyss1 = yyss;
1549         union yyalloc *yyptr =
1550           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1551         if (! yyptr)
1552           goto yyexhaustedlab;
1553         YYSTACK_RELOCATE (yyss);
1554         YYSTACK_RELOCATE (yyvs);
1556 #  undef YYSTACK_RELOCATE
1557         if (yyss1 != yyssa)
1558           YYSTACK_FREE (yyss1);
1559       }
1560 # endif
1561 #endif /* no yyoverflow */
1563       yyssp = yyss + yysize - 1;
1564       yyvsp = yyvs + yysize - 1;
1567       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1568                   (unsigned long int) yystacksize));
1570       if (yyss + yystacksize - 1 <= yyssp)
1571         YYABORT;
1572     }
1574   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1576   goto yybackup;
1578 /*-----------.
1579 | yybackup.  |
1580 `-----------*/
1581 yybackup:
1583   /* Do appropriate processing given the current state.  Read a
1584      look-ahead token if we need one and don't already have one.  */
1586   /* First try to decide what to do without reference to look-ahead token.  */
1587   yyn = yypact[yystate];
1588   if (yyn == YYPACT_NINF)
1589     goto yydefault;
1591   /* Not known => get a look-ahead token if don't already have one.  */
1593   /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
1594   if (yychar == YYEMPTY)
1595     {
1596       YYDPRINTF ((stderr, "Reading a token: "));
1597       yychar = YYLEX;
1598     }
1600   if (yychar <= YYEOF)
1601     {
1602       yychar = yytoken = YYEOF;
1603       YYDPRINTF ((stderr, "Now at end of input.\n"));
1604     }
1605   else
1606     {
1607       yytoken = YYTRANSLATE (yychar);
1608       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1609     }
1611   /* If the proper action on seeing token YYTOKEN is to reduce or to
1612      detect an error, take that action.  */
1613   yyn += yytoken;
1614   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1615     goto yydefault;
1616   yyn = yytable[yyn];
1617   if (yyn <= 0)
1618     {
1619       if (yyn == 0 || yyn == YYTABLE_NINF)
1620         goto yyerrlab;
1621       yyn = -yyn;
1622       goto yyreduce;
1623     }
1625   if (yyn == YYFINAL)
1626     YYACCEPT;
1628   /* Count tokens shifted since error; after three, turn off error
1629      status.  */
1630   if (yyerrstatus)
1631     yyerrstatus--;
1633   /* Shift the look-ahead token.  */
1634   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1636   /* Discard the shifted token unless it is eof.  */
1637   if (yychar != YYEOF)
1638     yychar = YYEMPTY;
1640   yystate = yyn;
1641   *++yyvsp = yylval;
1643   goto yynewstate;
1646 /*-----------------------------------------------------------.
1647 | yydefault -- do the default action for the current state.  |
1648 `-----------------------------------------------------------*/
1649 yydefault:
1650   yyn = yydefact[yystate];
1651   if (yyn == 0)
1652     goto yyerrlab;
1653   goto yyreduce;
1656 /*-----------------------------.
1657 | yyreduce -- Do a reduction.  |
1658 `-----------------------------*/
1659 yyreduce:
1660   /* yyn is the number of a rule to reduce with.  */
1661   yylen = yyr2[yyn];
1663   /* If YYLEN is nonzero, implement the default value of the action:
1664      `$$ = $1'.
1666      Otherwise, the following line sets YYVAL to garbage.
1667      This behavior is undocumented and Bison
1668      users should not rely upon it.  Assigning to YYVAL
1669      unconditionally makes the parser a bit smaller, and it avoids a
1670      GCC warning that YYVAL may be used uninitialized.  */
1671   yyval = yyvsp[1-yylen];
1674   YY_REDUCE_PRINT (yyn);
1675   switch (yyn)
1676     {
1677         case 4:
1678 #line 108 "scripts/genksyms/parse.y"
1679     { is_typedef = 0; is_extern = 0; current_name = NULL; decl_spec = NULL; ;}
1680     break;
1682   case 5:
1683 #line 110 "scripts/genksyms/parse.y"
1684     { free_list(*(yyvsp[(2) - (2)]), NULL); *(yyvsp[(2) - (2)]) = NULL; ;}
1685     break;
1687   case 6:
1688 #line 114 "scripts/genksyms/parse.y"
1689     { is_typedef = 1; ;}
1690     break;
1692   case 7:
1693 #line 115 "scripts/genksyms/parse.y"
1694     { (yyval) = (yyvsp[(4) - (4)]); ;}
1695     break;
1697   case 8:
1698 #line 116 "scripts/genksyms/parse.y"
1699     { is_typedef = 1; ;}
1700     break;
1702   case 9:
1703 #line 117 "scripts/genksyms/parse.y"
1704     { (yyval) = (yyvsp[(3) - (3)]); ;}
1705     break;
1707   case 14:
1708 #line 122 "scripts/genksyms/parse.y"
1709     { (yyval) = (yyvsp[(2) - (2)]); ;}
1710     break;
1712   case 15:
1713 #line 123 "scripts/genksyms/parse.y"
1714     { (yyval) = (yyvsp[(2) - (2)]); ;}
1715     break;
1717   case 16:
1718 #line 128 "scripts/genksyms/parse.y"
1719     { if (current_name) {
1720                     struct string_list *decl = (*(yyvsp[(3) - (3)]))->next;
1721                     (*(yyvsp[(3) - (3)]))->next = NULL;
1722                     add_symbol(current_name,
1723                                is_typedef ? SYM_TYPEDEF : SYM_NORMAL,
1724                                decl, is_extern);
1725                     current_name = NULL;
1726                   }
1727                   (yyval) = (yyvsp[(3) - (3)]);
1728                 ;}
1729     break;
1731   case 17:
1732 #line 141 "scripts/genksyms/parse.y"
1733     { (yyval) = NULL; ;}
1734     break;
1736   case 19:
1737 #line 147 "scripts/genksyms/parse.y"
1738     { struct string_list *decl = *(yyvsp[(1) - (1)]);
1739                   *(yyvsp[(1) - (1)]) = NULL;
1740                   add_symbol(current_name,
1741                              is_typedef ? SYM_TYPEDEF : SYM_NORMAL, decl, is_extern);
1742                   current_name = NULL;
1743                   (yyval) = (yyvsp[(1) - (1)]);
1744                 ;}
1745     break;
1747   case 20:
1748 #line 155 "scripts/genksyms/parse.y"
1749     { struct string_list *decl = *(yyvsp[(3) - (3)]);
1750                   *(yyvsp[(3) - (3)]) = NULL;
1751                   free_list(*(yyvsp[(2) - (3)]), NULL);
1752                   *(yyvsp[(2) - (3)]) = decl_spec;
1753                   add_symbol(current_name,
1754                              is_typedef ? SYM_TYPEDEF : SYM_NORMAL, decl, is_extern);
1755                   current_name = NULL;
1756                   (yyval) = (yyvsp[(3) - (3)]);
1757                 ;}
1758     break;
1760   case 21:
1761 #line 168 "scripts/genksyms/parse.y"
1762     { (yyval) = (yyvsp[(4) - (4)]) ? (yyvsp[(4) - (4)]) : (yyvsp[(3) - (4)]) ? (yyvsp[(3) - (4)]) : (yyvsp[(2) - (4)]) ? (yyvsp[(2) - (4)]) : (yyvsp[(1) - (4)]); ;}
1763     break;
1765   case 22:
1766 #line 173 "scripts/genksyms/parse.y"
1767     { decl_spec = NULL; ;}
1768     break;
1770   case 24:
1771 #line 178 "scripts/genksyms/parse.y"
1772     { decl_spec = *(yyvsp[(1) - (1)]); ;}
1773     break;
1775   case 25:
1776 #line 179 "scripts/genksyms/parse.y"
1777     { decl_spec = *(yyvsp[(2) - (2)]); ;}
1778     break;
1780   case 26:
1781 #line 184 "scripts/genksyms/parse.y"
1782     { /* Version 2 checksumming ignores storage class, as that
1783                      is really irrelevant to the linkage.  */
1784                   remove_node((yyvsp[(1) - (1)]));
1785                   (yyval) = (yyvsp[(1) - (1)]);
1786                 ;}
1787     break;
1789   case 31:
1790 #line 196 "scripts/genksyms/parse.y"
1791     { is_extern = 1; (yyval) = (yyvsp[(1) - (1)]); ;}
1792     break;
1794   case 32:
1795 #line 197 "scripts/genksyms/parse.y"
1796     { is_extern = 0; (yyval) = (yyvsp[(1) - (1)]); ;}
1797     break;
1799   case 37:
1800 #line 209 "scripts/genksyms/parse.y"
1801     { remove_node((yyvsp[(1) - (2)])); (*(yyvsp[(2) - (2)]))->tag = SYM_STRUCT; (yyval) = (yyvsp[(2) - (2)]); ;}
1802     break;
1804   case 38:
1805 #line 211 "scripts/genksyms/parse.y"
1806     { remove_node((yyvsp[(1) - (2)])); (*(yyvsp[(2) - (2)]))->tag = SYM_UNION; (yyval) = (yyvsp[(2) - (2)]); ;}
1807     break;
1809   case 39:
1810 #line 213 "scripts/genksyms/parse.y"
1811     { remove_node((yyvsp[(1) - (2)])); (*(yyvsp[(2) - (2)]))->tag = SYM_ENUM; (yyval) = (yyvsp[(2) - (2)]); ;}
1812     break;
1814   case 40:
1815 #line 217 "scripts/genksyms/parse.y"
1816     { struct string_list *s = *(yyvsp[(3) - (3)]), *i = *(yyvsp[(2) - (3)]), *r;
1817                   r = copy_node(i); r->tag = SYM_STRUCT;
1818                   r->next = (*(yyvsp[(1) - (3)]))->next; *(yyvsp[(3) - (3)]) = r; (*(yyvsp[(1) - (3)]))->next = NULL;
1819                   add_symbol(i->string, SYM_STRUCT, s, is_extern);
1820                   (yyval) = (yyvsp[(3) - (3)]);
1821                 ;}
1822     break;
1824   case 41:
1825 #line 224 "scripts/genksyms/parse.y"
1826     { struct string_list *s = *(yyvsp[(3) - (3)]), *i = *(yyvsp[(2) - (3)]), *r;
1827                   r = copy_node(i); r->tag = SYM_UNION;
1828                   r->next = (*(yyvsp[(1) - (3)]))->next; *(yyvsp[(3) - (3)]) = r; (*(yyvsp[(1) - (3)]))->next = NULL;
1829                   add_symbol(i->string, SYM_UNION, s, is_extern);
1830                   (yyval) = (yyvsp[(3) - (3)]);
1831                 ;}
1832     break;
1834   case 42:
1835 #line 231 "scripts/genksyms/parse.y"
1836     { struct string_list *s = *(yyvsp[(3) - (3)]), *i = *(yyvsp[(2) - (3)]), *r;
1837                   r = copy_node(i); r->tag = SYM_ENUM;
1838                   r->next = (*(yyvsp[(1) - (3)]))->next; *(yyvsp[(3) - (3)]) = r; (*(yyvsp[(1) - (3)]))->next = NULL;
1839                   add_symbol(i->string, SYM_ENUM, s, is_extern);
1840                   (yyval) = (yyvsp[(3) - (3)]);
1841                 ;}
1842     break;
1844   case 43:
1845 #line 239 "scripts/genksyms/parse.y"
1846     { (yyval) = (yyvsp[(2) - (2)]); ;}
1847     break;
1849   case 44:
1850 #line 240 "scripts/genksyms/parse.y"
1851     { (yyval) = (yyvsp[(2) - (2)]); ;}
1852     break;
1854   case 45:
1855 #line 241 "scripts/genksyms/parse.y"
1856     { (yyval) = (yyvsp[(2) - (2)]); ;}
1857     break;
1859   case 56:
1860 #line 255 "scripts/genksyms/parse.y"
1861     { (*(yyvsp[(1) - (1)]))->tag = SYM_TYPEDEF; (yyval) = (yyvsp[(1) - (1)]); ;}
1862     break;
1864   case 57:
1865 #line 260 "scripts/genksyms/parse.y"
1866     { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); ;}
1867     break;
1869   case 58:
1870 #line 264 "scripts/genksyms/parse.y"
1871     { (yyval) = NULL; ;}
1872     break;
1874   case 61:
1875 #line 270 "scripts/genksyms/parse.y"
1876     { (yyval) = (yyvsp[(2) - (2)]); ;}
1877     break;
1879   case 65:
1880 #line 276 "scripts/genksyms/parse.y"
1881     { /* restrict has no effect in prototypes so ignore it */
1882                   remove_node((yyvsp[(1) - (1)]));
1883                   (yyval) = (yyvsp[(1) - (1)]);
1884                 ;}
1885     break;
1887   case 66:
1888 #line 283 "scripts/genksyms/parse.y"
1889     { (yyval) = (yyvsp[(2) - (2)]); ;}
1890     break;
1892   case 68:
1893 #line 289 "scripts/genksyms/parse.y"
1894     { if (current_name != NULL) {
1895                     error_with_pos("unexpected second declaration name");
1896                     YYERROR;
1897                   } else {
1898                     current_name = (*(yyvsp[(1) - (1)]))->string;
1899                     (yyval) = (yyvsp[(1) - (1)]);
1900                   }
1901                 ;}
1902     break;
1904   case 69:
1905 #line 298 "scripts/genksyms/parse.y"
1906     { (yyval) = (yyvsp[(4) - (4)]); ;}
1907     break;
1909   case 70:
1910 #line 300 "scripts/genksyms/parse.y"
1911     { (yyval) = (yyvsp[(4) - (4)]); ;}
1912     break;
1914   case 71:
1915 #line 302 "scripts/genksyms/parse.y"
1916     { (yyval) = (yyvsp[(2) - (2)]); ;}
1917     break;
1919   case 72:
1920 #line 304 "scripts/genksyms/parse.y"
1921     { (yyval) = (yyvsp[(3) - (3)]); ;}
1922     break;
1924   case 73:
1925 #line 306 "scripts/genksyms/parse.y"
1926     { (yyval) = (yyvsp[(3) - (3)]); ;}
1927     break;
1929   case 74:
1930 #line 312 "scripts/genksyms/parse.y"
1931     { (yyval) = (yyvsp[(2) - (2)]); ;}
1932     break;
1934   case 78:
1935 #line 320 "scripts/genksyms/parse.y"
1936     { (yyval) = (yyvsp[(4) - (4)]); ;}
1937     break;
1939   case 79:
1940 #line 322 "scripts/genksyms/parse.y"
1941     { (yyval) = (yyvsp[(4) - (4)]); ;}
1942     break;
1944   case 80:
1945 #line 324 "scripts/genksyms/parse.y"
1946     { (yyval) = (yyvsp[(2) - (2)]); ;}
1947     break;
1949   case 81:
1950 #line 326 "scripts/genksyms/parse.y"
1951     { (yyval) = (yyvsp[(3) - (3)]); ;}
1952     break;
1954   case 82:
1955 #line 328 "scripts/genksyms/parse.y"
1956     { (yyval) = (yyvsp[(3) - (3)]); ;}
1957     break;
1959   case 83:
1960 #line 332 "scripts/genksyms/parse.y"
1961     { (yyval) = (yyvsp[(2) - (2)]); ;}
1962     break;
1964   case 85:
1965 #line 334 "scripts/genksyms/parse.y"
1966     { (yyval) = (yyvsp[(3) - (3)]); ;}
1967     break;
1969   case 86:
1970 #line 338 "scripts/genksyms/parse.y"
1971     { (yyval) = NULL; ;}
1972     break;
1974   case 89:
1975 #line 345 "scripts/genksyms/parse.y"
1976     { (yyval) = (yyvsp[(3) - (3)]); ;}
1977     break;
1979   case 90:
1980 #line 350 "scripts/genksyms/parse.y"
1981     { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); ;}
1982     break;
1984   case 91:
1985 #line 355 "scripts/genksyms/parse.y"
1986     { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); ;}
1987     break;
1989   case 93:
1990 #line 360 "scripts/genksyms/parse.y"
1991     { (yyval) = NULL; ;}
1992     break;
1994   case 94:
1995 #line 362 "scripts/genksyms/parse.y"
1996     { /* For version 2 checksums, we don't want to remember
1997                      private parameter names.  */
1998                   remove_node((yyvsp[(1) - (1)]));
1999                   (yyval) = (yyvsp[(1) - (1)]);
2000                 ;}
2001     break;
2003   case 95:
2004 #line 370 "scripts/genksyms/parse.y"
2005     { remove_node((yyvsp[(1) - (1)]));
2006                   (yyval) = (yyvsp[(1) - (1)]);
2007                 ;}
2008     break;
2010   case 96:
2011 #line 374 "scripts/genksyms/parse.y"
2012     { (yyval) = (yyvsp[(4) - (4)]); ;}
2013     break;
2015   case 97:
2016 #line 376 "scripts/genksyms/parse.y"
2017     { (yyval) = (yyvsp[(4) - (4)]); ;}
2018     break;
2020   case 98:
2021 #line 378 "scripts/genksyms/parse.y"
2022     { (yyval) = (yyvsp[(2) - (2)]); ;}
2023     break;
2025   case 99:
2026 #line 380 "scripts/genksyms/parse.y"
2027     { (yyval) = (yyvsp[(3) - (3)]); ;}
2028     break;
2030   case 100:
2031 #line 382 "scripts/genksyms/parse.y"
2032     { (yyval) = (yyvsp[(3) - (3)]); ;}
2033     break;
2035   case 101:
2036 #line 387 "scripts/genksyms/parse.y"
2037     { struct string_list *decl = *(yyvsp[(2) - (3)]);
2038                   *(yyvsp[(2) - (3)]) = NULL;
2039                   add_symbol(current_name, SYM_NORMAL, decl, is_extern);
2040                   (yyval) = (yyvsp[(3) - (3)]);
2041                 ;}
2042     break;
2044   case 102:
2045 #line 395 "scripts/genksyms/parse.y"
2046     { (yyval) = NULL; ;}
2047     break;
2049   case 104:
2050 #line 402 "scripts/genksyms/parse.y"
2051     { remove_list((yyvsp[(2) - (2)]), &(*(yyvsp[(1) - (2)]))->next); (yyval) = (yyvsp[(2) - (2)]); ;}
2052     break;
2054   case 105:
2055 #line 406 "scripts/genksyms/parse.y"
2056     { (yyval) = (yyvsp[(3) - (3)]); ;}
2057     break;
2059   case 106:
2060 #line 407 "scripts/genksyms/parse.y"
2061     { (yyval) = (yyvsp[(3) - (3)]); ;}
2062     break;
2064   case 107:
2065 #line 411 "scripts/genksyms/parse.y"
2066     { (yyval) = NULL; ;}
2067     break;
2069   case 110:
2070 #line 417 "scripts/genksyms/parse.y"
2071     { (yyval) = (yyvsp[(2) - (2)]); ;}
2072     break;
2074   case 111:
2075 #line 422 "scripts/genksyms/parse.y"
2076     { (yyval) = (yyvsp[(3) - (3)]); ;}
2077     break;
2079   case 112:
2080 #line 424 "scripts/genksyms/parse.y"
2081     { (yyval) = (yyvsp[(2) - (2)]); ;}
2082     break;
2084   case 113:
2085 #line 428 "scripts/genksyms/parse.y"
2086     { (yyval) = NULL; ;}
2087     break;
2089   case 116:
2090 #line 434 "scripts/genksyms/parse.y"
2091     { (yyval) = (yyvsp[(3) - (3)]); ;}
2092     break;
2094   case 117:
2095 #line 438 "scripts/genksyms/parse.y"
2096     { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); ;}
2097     break;
2099   case 118:
2100 #line 439 "scripts/genksyms/parse.y"
2101     { (yyval) = (yyvsp[(2) - (2)]); ;}
2102     break;
2104   case 120:
2105 #line 444 "scripts/genksyms/parse.y"
2106     { (yyval) = (yyvsp[(2) - (2)]); ;}
2107     break;
2109   case 121:
2110 #line 448 "scripts/genksyms/parse.y"
2111     { (yyval) = NULL; ;}
2112     break;
2114   case 123:
2115 #line 453 "scripts/genksyms/parse.y"
2116     { (yyval) = (yyvsp[(2) - (2)]); ;}
2117     break;
2119   case 124:
2120 #line 457 "scripts/genksyms/parse.y"
2121     { (yyval) = NULL; ;}
2122     break;
2124   case 126:
2125 #line 463 "scripts/genksyms/parse.y"
2126     { export_symbol((*(yyvsp[(3) - (5)]))->string); (yyval) = (yyvsp[(5) - (5)]); ;}
2127     break;
2130 /* Line 1267 of yacc.c.  */
2131 #line 2132 "scripts/genksyms/parse.c"
2132       default: break;
2133     }
2134   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2136   YYPOPSTACK (yylen);
2137   yylen = 0;
2138   YY_STACK_PRINT (yyss, yyssp);
2140   *++yyvsp = yyval;
2143   /* Now `shift' the result of the reduction.  Determine what state
2144      that goes to, based on the state we popped back to and the rule
2145      number reduced by.  */
2147   yyn = yyr1[yyn];
2149   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2150   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2151     yystate = yytable[yystate];
2152   else
2153     yystate = yydefgoto[yyn - YYNTOKENS];
2155   goto yynewstate;
2158 /*------------------------------------.
2159 | yyerrlab -- here on detecting error |
2160 `------------------------------------*/
2161 yyerrlab:
2162   /* If not already recovering from an error, report this error.  */
2163   if (!yyerrstatus)
2164     {
2165       ++yynerrs;
2166 #if ! YYERROR_VERBOSE
2167       yyerror (YY_("syntax error"));
2168 #else
2169       {
2170         YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
2171         if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
2172           {
2173             YYSIZE_T yyalloc = 2 * yysize;
2174             if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
2175               yyalloc = YYSTACK_ALLOC_MAXIMUM;
2176             if (yymsg != yymsgbuf)
2177               YYSTACK_FREE (yymsg);
2178             yymsg = (char *) YYSTACK_ALLOC (yyalloc);
2179             if (yymsg)
2180               yymsg_alloc = yyalloc;
2181             else
2182               {
2183                 yymsg = yymsgbuf;
2184                 yymsg_alloc = sizeof yymsgbuf;
2185               }
2186           }
2188         if (0 < yysize && yysize <= yymsg_alloc)
2189           {
2190             (void) yysyntax_error (yymsg, yystate, yychar);
2191             yyerror (yymsg);
2192           }
2193         else
2194           {
2195             yyerror (YY_("syntax error"));
2196             if (yysize != 0)
2197               goto yyexhaustedlab;
2198           }
2199       }
2200 #endif
2201     }
2205   if (yyerrstatus == 3)
2206     {
2207       /* If just tried and failed to reuse look-ahead token after an
2208          error, discard it.  */
2210       if (yychar <= YYEOF)
2211         {
2212           /* Return failure if at end of input.  */
2213           if (yychar == YYEOF)
2214             YYABORT;
2215         }
2216       else
2217         {
2218           yydestruct ("Error: discarding",
2219                       yytoken, &yylval);
2220           yychar = YYEMPTY;
2221         }
2222     }
2224   /* Else will try to reuse look-ahead token after shifting the error
2225      token.  */
2226   goto yyerrlab1;
2229 /*---------------------------------------------------.
2230 | yyerrorlab -- error raised explicitly by YYERROR.  |
2231 `---------------------------------------------------*/
2232 yyerrorlab:
2234   /* Pacify compilers like GCC when the user code never invokes
2235      YYERROR and the label yyerrorlab therefore never appears in user
2236      code.  */
2237   if (/*CONSTCOND*/ 0)
2238      goto yyerrorlab;
2240   /* Do not reclaim the symbols of the rule which action triggered
2241      this YYERROR.  */
2242   YYPOPSTACK (yylen);
2243   yylen = 0;
2244   YY_STACK_PRINT (yyss, yyssp);
2245   yystate = *yyssp;
2246   goto yyerrlab1;
2249 /*-------------------------------------------------------------.
2250 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
2251 `-------------------------------------------------------------*/
2252 yyerrlab1:
2253   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
2255   for (;;)
2256     {
2257       yyn = yypact[yystate];
2258       if (yyn != YYPACT_NINF)
2259         {
2260           yyn += YYTERROR;
2261           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2262             {
2263               yyn = yytable[yyn];
2264               if (0 < yyn)
2265                 break;
2266             }
2267         }
2269       /* Pop the current state because it cannot handle the error token.  */
2270       if (yyssp == yyss)
2271         YYABORT;
2274       yydestruct ("Error: popping",
2275                   yystos[yystate], yyvsp);
2276       YYPOPSTACK (1);
2277       yystate = *yyssp;
2278       YY_STACK_PRINT (yyss, yyssp);
2279     }
2281   if (yyn == YYFINAL)
2282     YYACCEPT;
2284   *++yyvsp = yylval;
2287   /* Shift the error token.  */
2288   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2290   yystate = yyn;
2291   goto yynewstate;
2294 /*-------------------------------------.
2295 | yyacceptlab -- YYACCEPT comes here.  |
2296 `-------------------------------------*/
2297 yyacceptlab:
2298   yyresult = 0;
2299   goto yyreturn;
2301 /*-----------------------------------.
2302 | yyabortlab -- YYABORT comes here.  |
2303 `-----------------------------------*/
2304 yyabortlab:
2305   yyresult = 1;
2306   goto yyreturn;
2308 #ifndef yyoverflow
2309 /*-------------------------------------------------.
2310 | yyexhaustedlab -- memory exhaustion comes here.  |
2311 `-------------------------------------------------*/
2312 yyexhaustedlab:
2313   yyerror (YY_("memory exhausted"));
2314   yyresult = 2;
2315   /* Fall through.  */
2316 #endif
2318 yyreturn:
2319   if (yychar != YYEOF && yychar != YYEMPTY)
2320      yydestruct ("Cleanup: discarding lookahead",
2321                  yytoken, &yylval);
2322   /* Do not reclaim the symbols of the rule which action triggered
2323      this YYABORT or YYACCEPT.  */
2324   YYPOPSTACK (yylen);
2325   YY_STACK_PRINT (yyss, yyssp);
2326   while (yyssp != yyss)
2327     {
2328       yydestruct ("Cleanup: popping",
2329                   yystos[*yyssp], yyvsp);
2330       YYPOPSTACK (1);
2331     }
2332 #ifndef yyoverflow
2333   if (yyss != yyssa)
2334     YYSTACK_FREE (yyss);
2335 #endif
2336 #if YYERROR_VERBOSE
2337   if (yymsg != yymsgbuf)
2338     YYSTACK_FREE (yymsg);
2339 #endif
2340   /* Make sure YYID is used.  */
2341   return YYID (yyresult);
2345 #line 467 "scripts/genksyms/parse.y"
2348 static void
2349 yyerror(const char *e)
2351   error_with_pos("%s", e);