Add linux-next specific files for 20110831
[linux-2.6/next.git] / scripts / genksyms / parse.tab.c_shipped
blob61d4a5d09856a6f90cc29c85f066b361bbc7c8ea
1 /* A Bison parser, made by GNU Bison 2.4.3.  */
3 /* Skeleton implementation for Bison's Yacc-like parsers in C
4    
5       Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
6    2009, 2010 Free Software Foundation, Inc.
7    
8    This program is free software: you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation, either version 3 of the License, or
11    (at your option) any later version.
12    
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17    
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21 /* As a special exception, you may create a larger work that contains
22    part or all of the Bison parser skeleton and distribute that work
23    under terms of your choice, so long as that work isn't itself a
24    parser generator using the skeleton or a modified version thereof
25    as a parser skeleton.  Alternatively, if you modify or redistribute
26    the parser skeleton itself, you may (at your option) remove this
27    special exception, which will cause the skeleton and the resulting
28    Bison output files to be licensed under the GNU General Public
29    License without this special exception.
30    
31    This special exception was added by the Free Software Foundation in
32    version 2.2 of Bison.  */
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35    simplifying the original so-called "semantic" parser.  */
37 /* All symbols defined below should begin with yy or YY, to avoid
38    infringing on user name space.  This should be done even for local
39    variables, as they might otherwise be expanded by user macros.
40    There are some unavoidable exceptions within include files to
41    define necessary library symbols; they are noted "INFRINGES ON
42    USER NAME SPACE" below.  */
44 /* Identify Bison output.  */
45 #define YYBISON 1
47 /* Bison version.  */
48 #define YYBISON_VERSION "2.4.3"
50 /* Skeleton name.  */
51 #define YYSKELETON_NAME "yacc.c"
53 /* Pure parsers.  */
54 #define YYPURE 0
56 /* Push parsers.  */
57 #define YYPUSH 0
59 /* Pull parsers.  */
60 #define YYPULL 1
62 /* Using locations.  */
63 #define YYLSP_NEEDED 0
67 /* Copy the first part of user declarations.  */
71 #include <assert.h>
72 #include <stdlib.h>
73 #include <string.h>
74 #include "genksyms.h"
76 static int is_typedef;
77 static int is_extern;
78 static char *current_name;
79 static struct string_list *decl_spec;
81 static void yyerror(const char *);
83 static inline void
84 remove_node(struct string_list **p)
86   struct string_list *node = *p;
87   *p = node->next;
88   free_node(node);
91 static inline void
92 remove_list(struct string_list **pb, struct string_list **pe)
94   struct string_list *b = *pb, *e = *pe;
95   *pb = e;
96   free_list(b, e);
102 /* Enabling traces.  */
103 #ifndef YYDEBUG
104 # define YYDEBUG 1
105 #endif
107 /* Enabling verbose error messages.  */
108 #ifdef YYERROR_VERBOSE
109 # undef YYERROR_VERBOSE
110 # define YYERROR_VERBOSE 1
111 #else
112 # define YYERROR_VERBOSE 0
113 #endif
115 /* Enabling the token table.  */
116 #ifndef YYTOKEN_TABLE
117 # define YYTOKEN_TABLE 0
118 #endif
121 /* Tokens.  */
122 #ifndef YYTOKENTYPE
123 # define YYTOKENTYPE
124    /* Put the tokens into the symbol table, so that GDB and other debuggers
125       know about them.  */
126    enum yytokentype {
127      ASM_KEYW = 258,
128      ATTRIBUTE_KEYW = 259,
129      AUTO_KEYW = 260,
130      BOOL_KEYW = 261,
131      CHAR_KEYW = 262,
132      CONST_KEYW = 263,
133      DOUBLE_KEYW = 264,
134      ENUM_KEYW = 265,
135      EXTERN_KEYW = 266,
136      EXTENSION_KEYW = 267,
137      FLOAT_KEYW = 268,
138      INLINE_KEYW = 269,
139      INT_KEYW = 270,
140      LONG_KEYW = 271,
141      REGISTER_KEYW = 272,
142      RESTRICT_KEYW = 273,
143      SHORT_KEYW = 274,
144      SIGNED_KEYW = 275,
145      STATIC_KEYW = 276,
146      STRUCT_KEYW = 277,
147      TYPEDEF_KEYW = 278,
148      UNION_KEYW = 279,
149      UNSIGNED_KEYW = 280,
150      VOID_KEYW = 281,
151      VOLATILE_KEYW = 282,
152      TYPEOF_KEYW = 283,
153      EXPORT_SYMBOL_KEYW = 284,
154      ASM_PHRASE = 285,
155      ATTRIBUTE_PHRASE = 286,
156      BRACE_PHRASE = 287,
157      BRACKET_PHRASE = 288,
158      EXPRESSION_PHRASE = 289,
159      CHAR = 290,
160      DOTS = 291,
161      IDENT = 292,
162      INT = 293,
163      REAL = 294,
164      STRING = 295,
165      TYPE = 296,
166      OTHER = 297,
167      FILENAME = 298
168    };
169 #endif
173 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
174 typedef int YYSTYPE;
175 # define YYSTYPE_IS_TRIVIAL 1
176 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
177 # define YYSTYPE_IS_DECLARED 1
178 #endif
181 /* Copy the second part of user declarations.  */
185 #ifdef short
186 # undef short
187 #endif
189 #ifdef YYTYPE_UINT8
190 typedef YYTYPE_UINT8 yytype_uint8;
191 #else
192 typedef unsigned char yytype_uint8;
193 #endif
195 #ifdef YYTYPE_INT8
196 typedef YYTYPE_INT8 yytype_int8;
197 #elif (defined __STDC__ || defined __C99__FUNC__ \
198      || defined __cplusplus || defined _MSC_VER)
199 typedef signed char yytype_int8;
200 #else
201 typedef short int yytype_int8;
202 #endif
204 #ifdef YYTYPE_UINT16
205 typedef YYTYPE_UINT16 yytype_uint16;
206 #else
207 typedef unsigned short int yytype_uint16;
208 #endif
210 #ifdef YYTYPE_INT16
211 typedef YYTYPE_INT16 yytype_int16;
212 #else
213 typedef short int yytype_int16;
214 #endif
216 #ifndef YYSIZE_T
217 # ifdef __SIZE_TYPE__
218 #  define YYSIZE_T __SIZE_TYPE__
219 # elif defined size_t
220 #  define YYSIZE_T size_t
221 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
222      || defined __cplusplus || defined _MSC_VER)
223 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
224 #  define YYSIZE_T size_t
225 # else
226 #  define YYSIZE_T unsigned int
227 # endif
228 #endif
230 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
232 #ifndef YY_
233 # if defined YYENABLE_NLS && YYENABLE_NLS
234 #  if ENABLE_NLS
235 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
236 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
237 #  endif
238 # endif
239 # ifndef YY_
240 #  define YY_(msgid) msgid
241 # endif
242 #endif
244 /* Suppress unused-variable warnings by "using" E.  */
245 #if ! defined lint || defined __GNUC__
246 # define YYUSE(e) ((void) (e))
247 #else
248 # define YYUSE(e) /* empty */
249 #endif
251 /* Identity function, used to suppress warnings about constant conditions.  */
252 #ifndef lint
253 # define YYID(n) (n)
254 #else
255 #if (defined __STDC__ || defined __C99__FUNC__ \
256      || defined __cplusplus || defined _MSC_VER)
257 static int
258 YYID (int yyi)
259 #else
260 static int
261 YYID (yyi)
262     int yyi;
263 #endif
265   return yyi;
267 #endif
269 #if ! defined yyoverflow || YYERROR_VERBOSE
271 /* The parser invokes alloca or malloc; define the necessary symbols.  */
273 # ifdef YYSTACK_USE_ALLOCA
274 #  if YYSTACK_USE_ALLOCA
275 #   ifdef __GNUC__
276 #    define YYSTACK_ALLOC __builtin_alloca
277 #   elif defined __BUILTIN_VA_ARG_INCR
278 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
279 #   elif defined _AIX
280 #    define YYSTACK_ALLOC __alloca
281 #   elif defined _MSC_VER
282 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
283 #    define alloca _alloca
284 #   else
285 #    define YYSTACK_ALLOC alloca
286 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
287      || defined __cplusplus || defined _MSC_VER)
288 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
289 #     ifndef _STDLIB_H
290 #      define _STDLIB_H 1
291 #     endif
292 #    endif
293 #   endif
294 #  endif
295 # endif
297 # ifdef YYSTACK_ALLOC
298    /* Pacify GCC's `empty if-body' warning.  */
299 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
300 #  ifndef YYSTACK_ALLOC_MAXIMUM
301     /* The OS might guarantee only one guard page at the bottom of the stack,
302        and a page size can be as small as 4096 bytes.  So we cannot safely
303        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
304        to allow for a few compiler-allocated temporary stack slots.  */
305 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
306 #  endif
307 # else
308 #  define YYSTACK_ALLOC YYMALLOC
309 #  define YYSTACK_FREE YYFREE
310 #  ifndef YYSTACK_ALLOC_MAXIMUM
311 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
312 #  endif
313 #  if (defined __cplusplus && ! defined _STDLIB_H \
314        && ! ((defined YYMALLOC || defined malloc) \
315              && (defined YYFREE || defined free)))
316 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
317 #   ifndef _STDLIB_H
318 #    define _STDLIB_H 1
319 #   endif
320 #  endif
321 #  ifndef YYMALLOC
322 #   define YYMALLOC malloc
323 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
324      || defined __cplusplus || defined _MSC_VER)
325 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
326 #   endif
327 #  endif
328 #  ifndef YYFREE
329 #   define YYFREE free
330 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
331      || defined __cplusplus || defined _MSC_VER)
332 void free (void *); /* INFRINGES ON USER NAME SPACE */
333 #   endif
334 #  endif
335 # endif
336 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
339 #if (! defined yyoverflow \
340      && (! defined __cplusplus \
341          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
343 /* A type that is properly aligned for any stack member.  */
344 union yyalloc
346   yytype_int16 yyss_alloc;
347   YYSTYPE yyvs_alloc;
350 /* The size of the maximum gap between one aligned stack and the next.  */
351 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
353 /* The size of an array large to enough to hold all stacks, each with
354    N elements.  */
355 # define YYSTACK_BYTES(N) \
356      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
357       + YYSTACK_GAP_MAXIMUM)
359 /* Copy COUNT objects from FROM to TO.  The source and destination do
360    not overlap.  */
361 # ifndef YYCOPY
362 #  if defined __GNUC__ && 1 < __GNUC__
363 #   define YYCOPY(To, From, Count) \
364       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
365 #  else
366 #   define YYCOPY(To, From, Count)              \
367       do                                        \
368         {                                       \
369           YYSIZE_T yyi;                         \
370           for (yyi = 0; yyi < (Count); yyi++)   \
371             (To)[yyi] = (From)[yyi];            \
372         }                                       \
373       while (YYID (0))
374 #  endif
375 # endif
377 /* Relocate STACK from its old location to the new one.  The
378    local variables YYSIZE and YYSTACKSIZE give the old and new number of
379    elements in the stack, and YYPTR gives the new location of the
380    stack.  Advance YYPTR to a properly aligned location for the next
381    stack.  */
382 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
383     do                                                                  \
384       {                                                                 \
385         YYSIZE_T yynewbytes;                                            \
386         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
387         Stack = &yyptr->Stack_alloc;                                    \
388         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
389         yyptr += yynewbytes / sizeof (*yyptr);                          \
390       }                                                                 \
391     while (YYID (0))
393 #endif
395 /* YYFINAL -- State number of the termination state.  */
396 #define YYFINAL  4
397 /* YYLAST -- Last index in YYTABLE.  */
398 #define YYLAST   532
400 /* YYNTOKENS -- Number of terminals.  */
401 #define YYNTOKENS  53
402 /* YYNNTS -- Number of nonterminals.  */
403 #define YYNNTS  49
404 /* YYNRULES -- Number of rules.  */
405 #define YYNRULES  132
406 /* YYNRULES -- Number of states.  */
407 #define YYNSTATES  188
409 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
410 #define YYUNDEFTOK  2
411 #define YYMAXUTOK   298
413 #define YYTRANSLATE(YYX)                                                \
414   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
416 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
417 static const yytype_uint8 yytranslate[] =
419        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
420        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
421        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
422        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
423       47,    49,    48,     2,    46,     2,     2,     2,     2,     2,
424        2,     2,     2,     2,     2,     2,     2,     2,    52,    44,
425        2,    50,     2,     2,     2,     2,     2,     2,     2,     2,
426        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
427        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
428        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
429        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
430        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
431        2,     2,     2,    51,     2,    45,     2,     2,     2,     2,
432        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
433        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
434        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
435        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
436        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
437        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
438        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
439        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
440        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
441        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
442        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
443        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
444        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
445        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
446       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
447       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
448       35,    36,    37,    38,    39,    40,    41,    42,    43
451 #if YYDEBUG
452 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
453    YYRHS.  */
454 static const yytype_uint16 yyprhs[] =
456        0,     0,     3,     5,     8,     9,    12,    13,    18,    19,
457       23,    25,    27,    29,    31,    34,    37,    41,    42,    44,
458       46,    50,    55,    56,    58,    60,    63,    65,    67,    69,
459       71,    73,    75,    77,    79,    81,    87,    92,    95,    98,
460      101,   105,   109,   113,   116,   119,   122,   124,   126,   128,
461      130,   132,   134,   136,   138,   140,   142,   144,   147,   148,
462      150,   152,   155,   157,   159,   161,   163,   166,   168,   170,
463      175,   180,   183,   187,   191,   194,   196,   198,   200,   205,
464      210,   213,   217,   221,   224,   226,   230,   231,   233,   235,
465      239,   242,   245,   247,   248,   250,   252,   257,   262,   265,
466      269,   273,   277,   278,   280,   283,   287,   291,   292,   294,
467      296,   299,   303,   306,   307,   309,   311,   315,   318,   321,
468      323,   326,   327,   330,   334,   339,   341,   345,   347,   351,
469      354,   355,   357
472 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
473 static const yytype_int8 yyrhs[] =
475       54,     0,    -1,    55,    -1,    54,    55,    -1,    -1,    56,
476       57,    -1,    -1,    12,    23,    58,    60,    -1,    -1,    23,
477       59,    60,    -1,    60,    -1,    84,    -1,    99,    -1,   101,
478       -1,     1,    44,    -1,     1,    45,    -1,    64,    61,    44,
479       -1,    -1,    62,    -1,    63,    -1,    62,    46,    63,    -1,
480       74,   100,    95,    85,    -1,    -1,    65,    -1,    66,    -1,
481       65,    66,    -1,    67,    -1,    68,    -1,     5,    -1,    17,
482       -1,    21,    -1,    11,    -1,    14,    -1,    69,    -1,    73,
483       -1,    28,    47,    65,    48,    49,    -1,    28,    47,    65,
484       49,    -1,    22,    37,    -1,    24,    37,    -1,    10,    37,
485       -1,    22,    37,    87,    -1,    24,    37,    87,    -1,    10,
486       37,    96,    -1,    10,    96,    -1,    22,    87,    -1,    24,
487       87,    -1,     7,    -1,    19,    -1,    15,    -1,    16,    -1,
488       20,    -1,    25,    -1,    13,    -1,     9,    -1,    26,    -1,
489        6,    -1,    41,    -1,    48,    71,    -1,    -1,    72,    -1,
490       73,    -1,    72,    73,    -1,     8,    -1,    27,    -1,    31,
491       -1,    18,    -1,    70,    74,    -1,    75,    -1,    37,    -1,
492       75,    47,    78,    49,    -1,    75,    47,     1,    49,    -1,
493       75,    33,    -1,    47,    74,    49,    -1,    47,     1,    49,
494       -1,    70,    76,    -1,    77,    -1,    37,    -1,    41,    -1,
495       77,    47,    78,    49,    -1,    77,    47,     1,    49,    -1,
496       77,    33,    -1,    47,    76,    49,    -1,    47,     1,    49,
497       -1,    79,    36,    -1,    79,    -1,    80,    46,    36,    -1,
498       -1,    80,    -1,    81,    -1,    80,    46,    81,    -1,    65,
499       82,    -1,    70,    82,    -1,    83,    -1,    -1,    37,    -1,
500       41,    -1,    83,    47,    78,    49,    -1,    83,    47,     1,
501       49,    -1,    83,    33,    -1,    47,    82,    49,    -1,    47,
502        1,    49,    -1,    64,    74,    32,    -1,    -1,    86,    -1,
503       50,    34,    -1,    51,    88,    45,    -1,    51,     1,    45,
504       -1,    -1,    89,    -1,    90,    -1,    89,    90,    -1,    64,
505       91,    44,    -1,     1,    44,    -1,    -1,    92,    -1,    93,
506       -1,    92,    46,    93,    -1,    76,    95,    -1,    37,    94,
507       -1,    94,    -1,    52,    34,    -1,    -1,    95,    31,    -1,
508       51,    97,    45,    -1,    51,    97,    46,    45,    -1,    98,
509       -1,    97,    46,    98,    -1,    37,    -1,    37,    50,    34,
510       -1,    30,    44,    -1,    -1,    30,    -1,    29,    47,    37,
511       49,    44,    -1
514 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
515 static const yytype_uint16 yyrline[] =
517        0,   104,   104,   105,   109,   109,   115,   115,   117,   117,
518      119,   120,   121,   122,   123,   124,   128,   142,   143,   147,
519      155,   168,   174,   175,   179,   180,   184,   190,   194,   195,
520      196,   197,   198,   202,   203,   204,   205,   209,   211,   213,
521      217,   224,   231,   241,   244,   245,   249,   250,   251,   252,
522      253,   254,   255,   256,   257,   258,   259,   263,   268,   269,
523      273,   274,   278,   278,   278,   279,   287,   288,   292,   301,
524      303,   305,   307,   309,   316,   317,   321,   322,   323,   325,
525      327,   329,   331,   336,   337,   338,   342,   343,   347,   348,
526      353,   358,   360,   364,   365,   373,   377,   379,   381,   383,
527      385,   390,   399,   400,   405,   410,   411,   415,   416,   420,
528      421,   425,   427,   432,   433,   437,   438,   442,   443,   444,
529      448,   452,   453,   457,   458,   462,   463,   466,   471,   479,
530      483,   484,   488
532 #endif
534 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
535 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
536    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
537 static const char *const yytname[] =
539   "$end", "error", "$undefined", "ASM_KEYW", "ATTRIBUTE_KEYW",
540   "AUTO_KEYW", "BOOL_KEYW", "CHAR_KEYW", "CONST_KEYW", "DOUBLE_KEYW",
541   "ENUM_KEYW", "EXTERN_KEYW", "EXTENSION_KEYW", "FLOAT_KEYW",
542   "INLINE_KEYW", "INT_KEYW", "LONG_KEYW", "REGISTER_KEYW", "RESTRICT_KEYW",
543   "SHORT_KEYW", "SIGNED_KEYW", "STATIC_KEYW", "STRUCT_KEYW",
544   "TYPEDEF_KEYW", "UNION_KEYW", "UNSIGNED_KEYW", "VOID_KEYW",
545   "VOLATILE_KEYW", "TYPEOF_KEYW", "EXPORT_SYMBOL_KEYW", "ASM_PHRASE",
546   "ATTRIBUTE_PHRASE", "BRACE_PHRASE", "BRACKET_PHRASE",
547   "EXPRESSION_PHRASE", "CHAR", "DOTS", "IDENT", "INT", "REAL", "STRING",
548   "TYPE", "OTHER", "FILENAME", "';'", "'}'", "','", "'('", "'*'", "')'",
549   "'='", "'{'", "':'", "$accept", "declaration_seq", "declaration", "$@1",
550   "declaration1", "$@2", "$@3", "simple_declaration",
551   "init_declarator_list_opt", "init_declarator_list", "init_declarator",
552   "decl_specifier_seq_opt", "decl_specifier_seq", "decl_specifier",
553   "storage_class_specifier", "type_specifier", "simple_type_specifier",
554   "ptr_operator", "cvar_qualifier_seq_opt", "cvar_qualifier_seq",
555   "cvar_qualifier", "declarator", "direct_declarator", "nested_declarator",
556   "direct_nested_declarator", "parameter_declaration_clause",
557   "parameter_declaration_list_opt", "parameter_declaration_list",
558   "parameter_declaration", "m_abstract_declarator",
559   "direct_m_abstract_declarator", "function_definition", "initializer_opt",
560   "initializer", "class_body", "member_specification_opt",
561   "member_specification", "member_declaration",
562   "member_declarator_list_opt", "member_declarator_list",
563   "member_declarator", "member_bitfield_declarator", "attribute_opt",
564   "enum_body", "enumerator_list", "enumerator", "asm_definition",
565   "asm_phrase_opt", "export_definition", 0
567 #endif
569 # ifdef YYPRINT
570 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
571    token YYLEX-NUM.  */
572 static const yytype_uint16 yytoknum[] =
574        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
575      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
576      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
577      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
578      295,   296,   297,   298,    59,   125,    44,    40,    42,    41,
579       61,   123,    58
581 # endif
583 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
584 static const yytype_uint8 yyr1[] =
586        0,    53,    54,    54,    56,    55,    58,    57,    59,    57,
587       57,    57,    57,    57,    57,    57,    60,    61,    61,    62,
588       62,    63,    64,    64,    65,    65,    66,    66,    67,    67,
589       67,    67,    67,    68,    68,    68,    68,    68,    68,    68,
590       68,    68,    68,    68,    68,    68,    69,    69,    69,    69,
591       69,    69,    69,    69,    69,    69,    69,    70,    71,    71,
592       72,    72,    73,    73,    73,    73,    74,    74,    75,    75,
593       75,    75,    75,    75,    76,    76,    77,    77,    77,    77,
594       77,    77,    77,    78,    78,    78,    79,    79,    80,    80,
595       81,    82,    82,    83,    83,    83,    83,    83,    83,    83,
596       83,    84,    85,    85,    86,    87,    87,    88,    88,    89,
597       89,    90,    90,    91,    91,    92,    92,    93,    93,    93,
598       94,    95,    95,    96,    96,    97,    97,    98,    98,    99,
599      100,   100,   101
602 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
603 static const yytype_uint8 yyr2[] =
605        0,     2,     1,     2,     0,     2,     0,     4,     0,     3,
606        1,     1,     1,     1,     2,     2,     3,     0,     1,     1,
607        3,     4,     0,     1,     1,     2,     1,     1,     1,     1,
608        1,     1,     1,     1,     1,     5,     4,     2,     2,     2,
609        3,     3,     3,     2,     2,     2,     1,     1,     1,     1,
610        1,     1,     1,     1,     1,     1,     1,     2,     0,     1,
611        1,     2,     1,     1,     1,     1,     2,     1,     1,     4,
612        4,     2,     3,     3,     2,     1,     1,     1,     4,     4,
613        2,     3,     3,     2,     1,     3,     0,     1,     1,     3,
614        2,     2,     1,     0,     1,     1,     4,     4,     2,     3,
615        3,     3,     0,     1,     2,     3,     3,     0,     1,     1,
616        2,     3,     2,     0,     1,     1,     3,     2,     2,     1,
617        2,     0,     2,     3,     4,     1,     3,     1,     3,     2,
618        0,     1,     5
621 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
622    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
623    means the default is an error.  */
624 static const yytype_uint8 yydefact[] =
626        4,     4,     2,     0,     1,     3,     0,    28,    55,    46,
627       62,    53,     0,    31,     0,    52,    32,    48,    49,    29,
628       65,    47,    50,    30,     0,     8,     0,    51,    54,    63,
629        0,     0,     0,    64,    56,     5,    10,    17,    23,    24,
630       26,    27,    33,    34,    11,    12,    13,    14,    15,    39,
631        0,    43,     6,    37,     0,    44,    22,    38,    45,     0,
632        0,   129,    68,     0,    58,     0,    18,    19,     0,   130,
633       67,    25,    42,   127,     0,   125,    22,    40,     0,   113,
634        0,     0,   109,     9,    17,    41,     0,     0,     0,     0,
635       57,    59,    60,    16,     0,    66,   131,   101,   121,    71,
636        0,     0,   123,     0,     7,   112,   106,    76,    77,     0,
637        0,     0,   121,    75,     0,   114,   115,   119,   105,     0,
638      110,   130,     0,    36,     0,    73,    72,    61,    20,   102,
639        0,    93,     0,    84,    87,    88,   128,   124,   126,   118,
640        0,    76,     0,   120,    74,   117,    80,     0,   111,     0,
641       35,   132,   122,     0,    21,   103,    70,    94,    56,     0,
642       93,    90,    92,    69,    83,     0,    82,    81,     0,     0,
643      116,   104,     0,    95,     0,    91,    98,     0,    85,    89,
644       79,    78,   100,    99,     0,     0,    97,    96
647 /* YYDEFGOTO[NTERM-NUM].  */
648 static const yytype_int16 yydefgoto[] =
650       -1,     1,     2,     3,    35,    76,    56,    36,    65,    66,
651       67,    79,    38,    39,    40,    41,    42,    68,    90,    91,
652       43,   121,    70,   112,   113,   132,   133,   134,   135,   161,
653      162,    44,   154,   155,    55,    80,    81,    82,   114,   115,
654      116,   117,   129,    51,    74,    75,    45,    98,    46
657 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
658    STATE-NUM.  */
659 #define YYPACT_NINF -135
660 static const yytype_int16 yypact[] =
662     -135,    20,  -135,   321,  -135,  -135,    30,  -135,  -135,  -135,
663     -135,  -135,   -28,  -135,     2,  -135,  -135,  -135,  -135,  -135,
664     -135,  -135,  -135,  -135,    -6,  -135,     9,  -135,  -135,  -135,
665       -5,    15,   -17,  -135,  -135,  -135,  -135,    18,   491,  -135,
666     -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,   -22,
667       31,  -135,  -135,    19,   106,  -135,   491,    19,  -135,   491,
668       50,  -135,  -135,    11,    -3,    51,    57,  -135,    18,   -14,
669       14,  -135,  -135,    48,    46,  -135,   491,  -135,    33,    32,
670       59,   154,  -135,  -135,    18,  -135,   365,    56,    60,    61,
671     -135,    -3,  -135,  -135,    18,  -135,  -135,  -135,  -135,  -135,
672      202,    74,  -135,   -23,  -135,  -135,  -135,    77,  -135,    16,
673      101,    49,  -135,    34,    92,    93,  -135,  -135,  -135,    94,
674     -135,   110,    95,  -135,    97,  -135,  -135,  -135,  -135,   -20,
675       96,   410,    99,   113,   100,  -135,  -135,  -135,  -135,  -135,
676      103,  -135,   107,  -135,  -135,   111,  -135,   239,  -135,    32,
677     -135,  -135,  -135,   123,  -135,  -135,  -135,  -135,  -135,     3,
678       52,  -135,    38,  -135,  -135,   454,  -135,  -135,   117,   128,
679     -135,  -135,   134,  -135,   135,  -135,  -135,   276,  -135,  -135,
680     -135,  -135,  -135,  -135,   137,   138,  -135,  -135
683 /* YYPGOTO[NTERM-NUM].  */
684 static const yytype_int16 yypgoto[] =
686     -135,  -135,   187,  -135,  -135,  -135,  -135,   -50,  -135,  -135,
687       98,     0,   -59,   -37,  -135,  -135,  -135,   -77,  -135,  -135,
688      -54,   -30,  -135,   -90,  -135,  -134,  -135,  -135,    24,   -58,
689     -135,  -135,  -135,  -135,   -18,  -135,  -135,   109,  -135,  -135,
690       44,    87,    84,   148,  -135,   102,  -135,  -135,  -135
693 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
694    positive, shift that token.  If negative, reduce the rule which
695    number is the opposite.  If zero, do what YYDEFACT says.
696    If YYTABLE_NINF, syntax error.  */
697 #define YYTABLE_NINF -109
698 static const yytype_int16 yytable[] =
700       86,    71,   111,    37,   172,    10,    83,    69,    58,    49,
701       92,   152,    88,   169,    73,    20,    96,   140,    97,   142,
702        4,   144,   137,    50,    29,    52,   104,    61,    33,    50,
703      153,    53,   111,    89,   111,    77,   -93,   127,    95,    85,
704      157,   131,    59,   185,   173,    54,    57,    99,    62,    71,
705      159,    64,   -93,   141,   160,    62,    84,   108,    63,    64,
706       54,   100,    60,   109,    64,    63,    64,   146,    73,   107,
707       54,   176,   111,   108,    47,    48,    84,   105,   106,   109,
708       64,   147,   160,   160,   110,   177,   141,    87,   131,   157,
709      108,   102,   103,   173,    71,    93,   109,    64,   101,   159,
710       64,   174,   175,    94,   118,   124,   131,    78,   136,   125,
711      126,     7,     8,     9,    10,    11,    12,    13,   131,    15,
712       16,    17,    18,    19,    20,    21,    22,    23,    24,   110,
713       26,    27,    28,    29,    30,   143,   148,    33,   105,   149,
714       96,   151,   152,   -22,   150,   156,   165,    34,   163,   164,
715      -22,  -107,   166,   -22,   -22,   119,   167,   171,   -22,     7,
716        8,     9,    10,    11,    12,    13,   180,    15,    16,    17,
717       18,    19,    20,    21,    22,    23,    24,   181,    26,    27,
718       28,    29,    30,   182,   183,    33,   186,   187,     5,   179,
719      120,   -22,   128,   170,   139,    34,   145,    72,   -22,  -108,
720        0,   -22,   -22,   130,     0,   138,   -22,     7,     8,     9,
721       10,    11,    12,    13,     0,    15,    16,    17,    18,    19,
722       20,    21,    22,    23,    24,     0,    26,    27,    28,    29,
723       30,     0,     0,    33,     0,     0,     0,     0,   -86,     0,
724      168,     0,     0,    34,     7,     8,     9,    10,    11,    12,
725       13,   -86,    15,    16,    17,    18,    19,    20,    21,    22,
726       23,    24,     0,    26,    27,    28,    29,    30,     0,     0,
727       33,     0,     0,     0,     0,   -86,     0,   184,     0,     0,
728       34,     7,     8,     9,    10,    11,    12,    13,   -86,    15,
729       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
730       26,    27,    28,    29,    30,     0,     0,    33,     0,     0,
731        0,     0,   -86,     0,     0,     0,     0,    34,     0,     0,
732        0,     0,     6,     0,     0,   -86,     7,     8,     9,    10,
733       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
734       21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
735       31,    32,    33,     0,     0,     0,     0,     0,   -22,     0,
736        0,     0,    34,     0,     0,   -22,     0,     0,   -22,   -22,
737        7,     8,     9,    10,    11,    12,    13,     0,    15,    16,
738       17,    18,    19,    20,    21,    22,    23,    24,     0,    26,
739       27,    28,    29,    30,     0,     0,    33,     0,     0,     0,
740        0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
741        0,     0,     0,   122,   123,     7,     8,     9,    10,    11,
742       12,    13,     0,    15,    16,    17,    18,    19,    20,    21,
743       22,    23,    24,     0,    26,    27,    28,    29,    30,     0,
744        0,    33,     0,     0,     0,     0,     0,   157,     0,     0,
745        0,   158,     0,     0,     0,     0,     0,   159,    64,     7,
746        8,     9,    10,    11,    12,    13,     0,    15,    16,    17,
747       18,    19,    20,    21,    22,    23,    24,     0,    26,    27,
748       28,    29,    30,     0,     0,    33,     0,     0,     0,     0,
749      178,     0,     0,     0,     0,    34,     7,     8,     9,    10,
750       11,    12,    13,     0,    15,    16,    17,    18,    19,    20,
751       21,    22,    23,    24,     0,    26,    27,    28,    29,    30,
752        0,     0,    33,     0,     0,     0,     0,     0,     0,     0,
753        0,     0,    34
756 static const yytype_int16 yycheck[] =
758       59,    38,    79,     3,     1,     8,    56,    37,    26,    37,
759       64,    31,     1,   147,    37,    18,    30,     1,    32,   109,
760        0,   111,    45,    51,    27,    23,    76,    44,    31,    51,
761       50,    37,   109,    63,   111,    53,    33,    91,    68,    57,
762       37,   100,    47,   177,    41,    51,    37,    33,    37,    86,
763       47,    48,    49,    37,   131,    37,    56,    41,    47,    48,
764       51,    47,    47,    47,    48,    47,    48,    33,    37,    37,
765       51,    33,   149,    41,    44,    45,    76,    44,    45,    47,
766       48,    47,   159,   160,    52,    47,    37,    37,   147,    37,
767       41,    45,    46,    41,   131,    44,    47,    48,    50,    47,
768       48,   159,   160,    46,    45,    49,   165,     1,    34,    49,
769       49,     5,     6,     7,     8,     9,    10,    11,   177,    13,
770       14,    15,    16,    17,    18,    19,    20,    21,    22,    52,
771       24,    25,    26,    27,    28,    34,    44,    31,    44,    46,
772       30,    44,    31,    37,    49,    49,    46,    41,    49,    36,
773       44,    45,    49,    47,    48,     1,    49,    34,    52,     5,
774        6,     7,     8,     9,    10,    11,    49,    13,    14,    15,
775       16,    17,    18,    19,    20,    21,    22,    49,    24,    25,
776       26,    27,    28,    49,    49,    31,    49,    49,     1,   165,
777       81,    37,    94,   149,   107,    41,   112,    49,    44,    45,
778       -1,    47,    48,     1,    -1,   103,    52,     5,     6,     7,
779        8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
780       18,    19,    20,    21,    22,    -1,    24,    25,    26,    27,
781       28,    -1,    -1,    31,    -1,    -1,    -1,    -1,    36,    -1,
782        1,    -1,    -1,    41,     5,     6,     7,     8,     9,    10,
783       11,    49,    13,    14,    15,    16,    17,    18,    19,    20,
784       21,    22,    -1,    24,    25,    26,    27,    28,    -1,    -1,
785       31,    -1,    -1,    -1,    -1,    36,    -1,     1,    -1,    -1,
786       41,     5,     6,     7,     8,     9,    10,    11,    49,    13,
787       14,    15,    16,    17,    18,    19,    20,    21,    22,    -1,
788       24,    25,    26,    27,    28,    -1,    -1,    31,    -1,    -1,
789       -1,    -1,    36,    -1,    -1,    -1,    -1,    41,    -1,    -1,
790       -1,    -1,     1,    -1,    -1,    49,     5,     6,     7,     8,
791        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
792       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
793       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
794       -1,    -1,    41,    -1,    -1,    44,    -1,    -1,    47,    48,
795        5,     6,     7,     8,     9,    10,    11,    -1,    13,    14,
796       15,    16,    17,    18,    19,    20,    21,    22,    -1,    24,
797       25,    26,    27,    28,    -1,    -1,    31,    -1,    -1,    -1,
798       -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,
799       -1,    -1,    -1,    48,    49,     5,     6,     7,     8,     9,
800       10,    11,    -1,    13,    14,    15,    16,    17,    18,    19,
801       20,    21,    22,    -1,    24,    25,    26,    27,    28,    -1,
802       -1,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
803       -1,    41,    -1,    -1,    -1,    -1,    -1,    47,    48,     5,
804        6,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
805       16,    17,    18,    19,    20,    21,    22,    -1,    24,    25,
806       26,    27,    28,    -1,    -1,    31,    -1,    -1,    -1,    -1,
807       36,    -1,    -1,    -1,    -1,    41,     5,     6,     7,     8,
808        9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
809       19,    20,    21,    22,    -1,    24,    25,    26,    27,    28,
810       -1,    -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
811       -1,    -1,    41
814 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
815    symbol of state STATE-NUM.  */
816 static const yytype_uint8 yystos[] =
818        0,    54,    55,    56,     0,    55,     1,     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,    41,    57,    60,    64,    65,    66,
822       67,    68,    69,    73,    84,    99,   101,    44,    45,    37,
823       51,    96,    23,    37,    51,    87,    59,    37,    87,    47,
824       47,    44,    37,    47,    48,    61,    62,    63,    70,    74,
825       75,    66,    96,    37,    97,    98,    58,    87,     1,    64,
826       88,    89,    90,    60,    64,    87,    65,    37,     1,    74,
827       71,    72,    73,    44,    46,    74,    30,    32,   100,    33,
828       47,    50,    45,    46,    60,    44,    45,    37,    41,    47,
829       52,    70,    76,    77,    91,    92,    93,    94,    45,     1,
830       90,    74,    48,    49,    49,    49,    49,    73,    63,    95,
831        1,    65,    78,    79,    80,    81,    34,    45,    98,    94,
832        1,    37,    76,    34,    76,    95,    33,    47,    44,    46,
833       49,    44,    31,    50,    85,    86,    49,    37,    41,    47,
834       70,    82,    83,    49,    36,    46,    49,    49,     1,    78,
835       93,    34,     1,    41,    82,    82,    33,    47,    36,    81,
836       49,    49,    49,    49,     1,    78,    49,    49
839 #define yyerrok         (yyerrstatus = 0)
840 #define yyclearin       (yychar = YYEMPTY)
841 #define YYEMPTY         (-2)
842 #define YYEOF           0
844 #define YYACCEPT        goto yyacceptlab
845 #define YYABORT         goto yyabortlab
846 #define YYERROR         goto yyerrorlab
849 /* Like YYERROR except do call yyerror.  This remains here temporarily
850    to ease the transition to the new meaning of YYERROR, for GCC.
851    Once GCC version 2 has supplanted version 1, this can go.  However,
852    YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
853    in Bison 2.4.2's NEWS entry, where a plan to phase it out is
854    discussed.  */
856 #define YYFAIL          goto yyerrlab
857 #if defined YYFAIL
858   /* This is here to suppress warnings from the GCC cpp's
859      -Wunused-macros.  Normally we don't worry about that warning, but
860      some users do, and we want to make it easy for users to remove
861      YYFAIL uses, which will produce warnings from Bison 2.5.  */
862 #endif
864 #define YYRECOVERING()  (!!yyerrstatus)
866 #define YYBACKUP(Token, Value)                                  \
867 do                                                              \
868   if (yychar == YYEMPTY && yylen == 1)                          \
869     {                                                           \
870       yychar = (Token);                                         \
871       yylval = (Value);                                         \
872       yytoken = YYTRANSLATE (yychar);                           \
873       YYPOPSTACK (1);                                           \
874       goto yybackup;                                            \
875     }                                                           \
876   else                                                          \
877     {                                                           \
878       yyerror (YY_("syntax error: cannot back up")); \
879       YYERROR;                                                  \
880     }                                                           \
881 while (YYID (0))
884 #define YYTERROR        1
885 #define YYERRCODE       256
888 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
889    If N is 0, then set CURRENT to the empty location which ends
890    the previous symbol: RHS[0] (always defined).  */
892 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
893 #ifndef YYLLOC_DEFAULT
894 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
895     do                                                                  \
896       if (YYID (N))                                                    \
897         {                                                               \
898           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
899           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
900           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
901           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
902         }                                                               \
903       else                                                              \
904         {                                                               \
905           (Current).first_line   = (Current).last_line   =              \
906             YYRHSLOC (Rhs, 0).last_line;                                \
907           (Current).first_column = (Current).last_column =              \
908             YYRHSLOC (Rhs, 0).last_column;                              \
909         }                                                               \
910     while (YYID (0))
911 #endif
914 /* YY_LOCATION_PRINT -- Print the location on the stream.
915    This macro was not mandated originally: define only if we know
916    we won't break user code: when these are the locations we know.  */
918 #ifndef YY_LOCATION_PRINT
919 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
920 #  define YY_LOCATION_PRINT(File, Loc)                  \
921      fprintf (File, "%d.%d-%d.%d",                      \
922               (Loc).first_line, (Loc).first_column,     \
923               (Loc).last_line,  (Loc).last_column)
924 # else
925 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
926 # endif
927 #endif
930 /* YYLEX -- calling `yylex' with the right arguments.  */
932 #ifdef YYLEX_PARAM
933 # define YYLEX yylex (YYLEX_PARAM)
934 #else
935 # define YYLEX yylex ()
936 #endif
938 /* Enable debugging if requested.  */
939 #if YYDEBUG
941 # ifndef YYFPRINTF
942 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
943 #  define YYFPRINTF fprintf
944 # endif
946 # define YYDPRINTF(Args)                        \
947 do {                                            \
948   if (yydebug)                                  \
949     YYFPRINTF Args;                             \
950 } while (YYID (0))
952 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
953 do {                                                                      \
954   if (yydebug)                                                            \
955     {                                                                     \
956       YYFPRINTF (stderr, "%s ", Title);                                   \
957       yy_symbol_print (stderr,                                            \
958                   Type, Value); \
959       YYFPRINTF (stderr, "\n");                                           \
960     }                                                                     \
961 } while (YYID (0))
964 /*--------------------------------.
965 | Print this symbol on YYOUTPUT.  |
966 `--------------------------------*/
968 /*ARGSUSED*/
969 #if (defined __STDC__ || defined __C99__FUNC__ \
970      || defined __cplusplus || defined _MSC_VER)
971 static void
972 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
973 #else
974 static void
975 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
976     FILE *yyoutput;
977     int yytype;
978     YYSTYPE const * const yyvaluep;
979 #endif
981   if (!yyvaluep)
982     return;
983 # ifdef YYPRINT
984   if (yytype < YYNTOKENS)
985     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
986 # else
987   YYUSE (yyoutput);
988 # endif
989   switch (yytype)
990     {
991       default:
992         break;
993     }
997 /*--------------------------------.
998 | Print this symbol on YYOUTPUT.  |
999 `--------------------------------*/
1001 #if (defined __STDC__ || defined __C99__FUNC__ \
1002      || defined __cplusplus || defined _MSC_VER)
1003 static void
1004 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1005 #else
1006 static void
1007 yy_symbol_print (yyoutput, yytype, yyvaluep)
1008     FILE *yyoutput;
1009     int yytype;
1010     YYSTYPE const * const yyvaluep;
1011 #endif
1013   if (yytype < YYNTOKENS)
1014     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1015   else
1016     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1018   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1019   YYFPRINTF (yyoutput, ")");
1022 /*------------------------------------------------------------------.
1023 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1024 | TOP (included).                                                   |
1025 `------------------------------------------------------------------*/
1027 #if (defined __STDC__ || defined __C99__FUNC__ \
1028      || defined __cplusplus || defined _MSC_VER)
1029 static void
1030 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1031 #else
1032 static void
1033 yy_stack_print (yybottom, yytop)
1034     yytype_int16 *yybottom;
1035     yytype_int16 *yytop;
1036 #endif
1038   YYFPRINTF (stderr, "Stack now");
1039   for (; yybottom <= yytop; yybottom++)
1040     {
1041       int yybot = *yybottom;
1042       YYFPRINTF (stderr, " %d", yybot);
1043     }
1044   YYFPRINTF (stderr, "\n");
1047 # define YY_STACK_PRINT(Bottom, Top)                            \
1048 do {                                                            \
1049   if (yydebug)                                                  \
1050     yy_stack_print ((Bottom), (Top));                           \
1051 } while (YYID (0))
1054 /*------------------------------------------------.
1055 | Report that the YYRULE is going to be reduced.  |
1056 `------------------------------------------------*/
1058 #if (defined __STDC__ || defined __C99__FUNC__ \
1059      || defined __cplusplus || defined _MSC_VER)
1060 static void
1061 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
1062 #else
1063 static void
1064 yy_reduce_print (yyvsp, yyrule)
1065     YYSTYPE *yyvsp;
1066     int yyrule;
1067 #endif
1069   int yynrhs = yyr2[yyrule];
1070   int yyi;
1071   unsigned long int yylno = yyrline[yyrule];
1072   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1073              yyrule - 1, yylno);
1074   /* The symbols being reduced.  */
1075   for (yyi = 0; yyi < yynrhs; yyi++)
1076     {
1077       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
1078       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1079                        &(yyvsp[(yyi + 1) - (yynrhs)])
1080                                        );
1081       YYFPRINTF (stderr, "\n");
1082     }
1085 # define YY_REDUCE_PRINT(Rule)          \
1086 do {                                    \
1087   if (yydebug)                          \
1088     yy_reduce_print (yyvsp, Rule); \
1089 } while (YYID (0))
1091 /* Nonzero means print parse trace.  It is left uninitialized so that
1092    multiple parsers can coexist.  */
1093 int yydebug;
1094 #else /* !YYDEBUG */
1095 # define YYDPRINTF(Args)
1096 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1097 # define YY_STACK_PRINT(Bottom, Top)
1098 # define YY_REDUCE_PRINT(Rule)
1099 #endif /* !YYDEBUG */
1102 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1103 #ifndef YYINITDEPTH
1104 # define YYINITDEPTH 200
1105 #endif
1107 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1108    if the built-in stack extension method is used).
1110    Do not make this value too large; the results are undefined if
1111    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1112    evaluated with infinite-precision integer arithmetic.  */
1114 #ifndef YYMAXDEPTH
1115 # define YYMAXDEPTH 10000
1116 #endif
1120 #if YYERROR_VERBOSE
1122 # ifndef yystrlen
1123 #  if defined __GLIBC__ && defined _STRING_H
1124 #   define yystrlen strlen
1125 #  else
1126 /* Return the length of YYSTR.  */
1127 #if (defined __STDC__ || defined __C99__FUNC__ \
1128      || defined __cplusplus || defined _MSC_VER)
1129 static YYSIZE_T
1130 yystrlen (const char *yystr)
1131 #else
1132 static YYSIZE_T
1133 yystrlen (yystr)
1134     const char *yystr;
1135 #endif
1137   YYSIZE_T yylen;
1138   for (yylen = 0; yystr[yylen]; yylen++)
1139     continue;
1140   return yylen;
1142 #  endif
1143 # endif
1145 # ifndef yystpcpy
1146 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1147 #   define yystpcpy stpcpy
1148 #  else
1149 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1150    YYDEST.  */
1151 #if (defined __STDC__ || defined __C99__FUNC__ \
1152      || defined __cplusplus || defined _MSC_VER)
1153 static char *
1154 yystpcpy (char *yydest, const char *yysrc)
1155 #else
1156 static char *
1157 yystpcpy (yydest, yysrc)
1158     char *yydest;
1159     const char *yysrc;
1160 #endif
1162   char *yyd = yydest;
1163   const char *yys = yysrc;
1165   while ((*yyd++ = *yys++) != '\0')
1166     continue;
1168   return yyd - 1;
1170 #  endif
1171 # endif
1173 # ifndef yytnamerr
1174 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1175    quotes and backslashes, so that it's suitable for yyerror.  The
1176    heuristic is that double-quoting is unnecessary unless the string
1177    contains an apostrophe, a comma, or backslash (other than
1178    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1179    null, do not copy; instead, return the length of what the result
1180    would have been.  */
1181 static YYSIZE_T
1182 yytnamerr (char *yyres, const char *yystr)
1184   if (*yystr == '"')
1185     {
1186       YYSIZE_T yyn = 0;
1187       char const *yyp = yystr;
1189       for (;;)
1190         switch (*++yyp)
1191           {
1192           case '\'':
1193           case ',':
1194             goto do_not_strip_quotes;
1196           case '\\':
1197             if (*++yyp != '\\')
1198               goto do_not_strip_quotes;
1199             /* Fall through.  */
1200           default:
1201             if (yyres)
1202               yyres[yyn] = *yyp;
1203             yyn++;
1204             break;
1206           case '"':
1207             if (yyres)
1208               yyres[yyn] = '\0';
1209             return yyn;
1210           }
1211     do_not_strip_quotes: ;
1212     }
1214   if (! yyres)
1215     return yystrlen (yystr);
1217   return yystpcpy (yyres, yystr) - yyres;
1219 # endif
1221 /* Copy into YYRESULT an error message about the unexpected token
1222    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
1223    including the terminating null byte.  If YYRESULT is null, do not
1224    copy anything; just return the number of bytes that would be
1225    copied.  As a special case, return 0 if an ordinary "syntax error"
1226    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
1227    size calculation.  */
1228 static YYSIZE_T
1229 yysyntax_error (char *yyresult, int yystate, int yychar)
1231   int yyn = yypact[yystate];
1233   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1234     return 0;
1235   else
1236     {
1237       int yytype = YYTRANSLATE (yychar);
1238       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1239       YYSIZE_T yysize = yysize0;
1240       YYSIZE_T yysize1;
1241       int yysize_overflow = 0;
1242       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1243       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1244       int yyx;
1246 # if 0
1247       /* This is so xgettext sees the translatable formats that are
1248          constructed on the fly.  */
1249       YY_("syntax error, unexpected %s");
1250       YY_("syntax error, unexpected %s, expecting %s");
1251       YY_("syntax error, unexpected %s, expecting %s or %s");
1252       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1253       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1254 # endif
1255       char *yyfmt;
1256       char const *yyf;
1257       static char const yyunexpected[] = "syntax error, unexpected %s";
1258       static char const yyexpecting[] = ", expecting %s";
1259       static char const yyor[] = " or %s";
1260       char yyformat[sizeof yyunexpected
1261                     + sizeof yyexpecting - 1
1262                     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1263                        * (sizeof yyor - 1))];
1264       char const *yyprefix = yyexpecting;
1266       /* Start YYX at -YYN if negative to avoid negative indexes in
1267          YYCHECK.  */
1268       int yyxbegin = yyn < 0 ? -yyn : 0;
1270       /* Stay within bounds of both yycheck and yytname.  */
1271       int yychecklim = YYLAST - yyn + 1;
1272       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1273       int yycount = 1;
1275       yyarg[0] = yytname[yytype];
1276       yyfmt = yystpcpy (yyformat, yyunexpected);
1278       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1279         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1280           {
1281             if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1282               {
1283                 yycount = 1;
1284                 yysize = yysize0;
1285                 yyformat[sizeof yyunexpected - 1] = '\0';
1286                 break;
1287               }
1288             yyarg[yycount++] = yytname[yyx];
1289             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1290             yysize_overflow |= (yysize1 < yysize);
1291             yysize = yysize1;
1292             yyfmt = yystpcpy (yyfmt, yyprefix);
1293             yyprefix = yyor;
1294           }
1296       yyf = YY_(yyformat);
1297       yysize1 = yysize + yystrlen (yyf);
1298       yysize_overflow |= (yysize1 < yysize);
1299       yysize = yysize1;
1301       if (yysize_overflow)
1302         return YYSIZE_MAXIMUM;
1304       if (yyresult)
1305         {
1306           /* Avoid sprintf, as that infringes on the user's name space.
1307              Don't have undefined behavior even if the translation
1308              produced a string with the wrong number of "%s"s.  */
1309           char *yyp = yyresult;
1310           int yyi = 0;
1311           while ((*yyp = *yyf) != '\0')
1312             {
1313               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1314                 {
1315                   yyp += yytnamerr (yyp, yyarg[yyi++]);
1316                   yyf += 2;
1317                 }
1318               else
1319                 {
1320                   yyp++;
1321                   yyf++;
1322                 }
1323             }
1324         }
1325       return yysize;
1326     }
1328 #endif /* YYERROR_VERBOSE */
1331 /*-----------------------------------------------.
1332 | Release the memory associated to this symbol.  |
1333 `-----------------------------------------------*/
1335 /*ARGSUSED*/
1336 #if (defined __STDC__ || defined __C99__FUNC__ \
1337      || defined __cplusplus || defined _MSC_VER)
1338 static void
1339 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1340 #else
1341 static void
1342 yydestruct (yymsg, yytype, yyvaluep)
1343     const char *yymsg;
1344     int yytype;
1345     YYSTYPE *yyvaluep;
1346 #endif
1348   YYUSE (yyvaluep);
1350   if (!yymsg)
1351     yymsg = "Deleting";
1352   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1354   switch (yytype)
1355     {
1357       default:
1358         break;
1359     }
1362 /* Prevent warnings from -Wmissing-prototypes.  */
1363 #ifdef YYPARSE_PARAM
1364 #if defined __STDC__ || defined __cplusplus
1365 int yyparse (void *YYPARSE_PARAM);
1366 #else
1367 int yyparse ();
1368 #endif
1369 #else /* ! YYPARSE_PARAM */
1370 #if defined __STDC__ || defined __cplusplus
1371 int yyparse (void);
1372 #else
1373 int yyparse ();
1374 #endif
1375 #endif /* ! YYPARSE_PARAM */
1378 /* The lookahead symbol.  */
1379 int yychar;
1381 /* The semantic value of the lookahead symbol.  */
1382 YYSTYPE yylval;
1384 /* Number of syntax errors so far.  */
1385 int yynerrs;
1389 /*-------------------------.
1390 | yyparse or yypush_parse.  |
1391 `-------------------------*/
1393 #ifdef YYPARSE_PARAM
1394 #if (defined __STDC__ || defined __C99__FUNC__ \
1395      || defined __cplusplus || defined _MSC_VER)
1397 yyparse (void *YYPARSE_PARAM)
1398 #else
1400 yyparse (YYPARSE_PARAM)
1401     void *YYPARSE_PARAM;
1402 #endif
1403 #else /* ! YYPARSE_PARAM */
1404 #if (defined __STDC__ || defined __C99__FUNC__ \
1405      || defined __cplusplus || defined _MSC_VER)
1407 yyparse (void)
1408 #else
1410 yyparse ()
1412 #endif
1413 #endif
1417     int yystate;
1418     /* Number of tokens to shift before error messages enabled.  */
1419     int yyerrstatus;
1421     /* The stacks and their tools:
1422        `yyss': related to states.
1423        `yyvs': related to semantic values.
1425        Refer to the stacks thru separate pointers, to allow yyoverflow
1426        to reallocate them elsewhere.  */
1428     /* The state stack.  */
1429     yytype_int16 yyssa[YYINITDEPTH];
1430     yytype_int16 *yyss;
1431     yytype_int16 *yyssp;
1433     /* The semantic value stack.  */
1434     YYSTYPE yyvsa[YYINITDEPTH];
1435     YYSTYPE *yyvs;
1436     YYSTYPE *yyvsp;
1438     YYSIZE_T yystacksize;
1440   int yyn;
1441   int yyresult;
1442   /* Lookahead token as an internal (translated) token number.  */
1443   int yytoken;
1444   /* The variables used to return semantic value and location from the
1445      action routines.  */
1446   YYSTYPE yyval;
1448 #if YYERROR_VERBOSE
1449   /* Buffer for error messages, and its allocated size.  */
1450   char yymsgbuf[128];
1451   char *yymsg = yymsgbuf;
1452   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1453 #endif
1455 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1457   /* The number of symbols on the RHS of the reduced rule.
1458      Keep to zero when no symbol should be popped.  */
1459   int yylen = 0;
1461   yytoken = 0;
1462   yyss = yyssa;
1463   yyvs = yyvsa;
1464   yystacksize = YYINITDEPTH;
1466   YYDPRINTF ((stderr, "Starting parse\n"));
1468   yystate = 0;
1469   yyerrstatus = 0;
1470   yynerrs = 0;
1471   yychar = YYEMPTY; /* Cause a token to be read.  */
1473   /* Initialize stack pointers.
1474      Waste one element of value and location stack
1475      so that they stay on the same level as the state stack.
1476      The wasted elements are never initialized.  */
1477   yyssp = yyss;
1478   yyvsp = yyvs;
1480   goto yysetstate;
1482 /*------------------------------------------------------------.
1483 | yynewstate -- Push a new state, which is found in yystate.  |
1484 `------------------------------------------------------------*/
1485  yynewstate:
1486   /* In all cases, when you get here, the value and location stacks
1487      have just been pushed.  So pushing a state here evens the stacks.  */
1488   yyssp++;
1490  yysetstate:
1491   *yyssp = yystate;
1493   if (yyss + yystacksize - 1 <= yyssp)
1494     {
1495       /* Get the current used size of the three stacks, in elements.  */
1496       YYSIZE_T yysize = yyssp - yyss + 1;
1498 #ifdef yyoverflow
1499       {
1500         /* Give user a chance to reallocate the stack.  Use copies of
1501            these so that the &'s don't force the real ones into
1502            memory.  */
1503         YYSTYPE *yyvs1 = yyvs;
1504         yytype_int16 *yyss1 = yyss;
1506         /* Each stack pointer address is followed by the size of the
1507            data in use in that stack, in bytes.  This used to be a
1508            conditional around just the two extra args, but that might
1509            be undefined if yyoverflow is a macro.  */
1510         yyoverflow (YY_("memory exhausted"),
1511                     &yyss1, yysize * sizeof (*yyssp),
1512                     &yyvs1, yysize * sizeof (*yyvsp),
1513                     &yystacksize);
1515         yyss = yyss1;
1516         yyvs = yyvs1;
1517       }
1518 #else /* no yyoverflow */
1519 # ifndef YYSTACK_RELOCATE
1520       goto yyexhaustedlab;
1521 # else
1522       /* Extend the stack our own way.  */
1523       if (YYMAXDEPTH <= yystacksize)
1524         goto yyexhaustedlab;
1525       yystacksize *= 2;
1526       if (YYMAXDEPTH < yystacksize)
1527         yystacksize = YYMAXDEPTH;
1529       {
1530         yytype_int16 *yyss1 = yyss;
1531         union yyalloc *yyptr =
1532           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1533         if (! yyptr)
1534           goto yyexhaustedlab;
1535         YYSTACK_RELOCATE (yyss_alloc, yyss);
1536         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1537 #  undef YYSTACK_RELOCATE
1538         if (yyss1 != yyssa)
1539           YYSTACK_FREE (yyss1);
1540       }
1541 # endif
1542 #endif /* no yyoverflow */
1544       yyssp = yyss + yysize - 1;
1545       yyvsp = yyvs + yysize - 1;
1547       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1548                   (unsigned long int) yystacksize));
1550       if (yyss + yystacksize - 1 <= yyssp)
1551         YYABORT;
1552     }
1554   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1556   if (yystate == YYFINAL)
1557     YYACCEPT;
1559   goto yybackup;
1561 /*-----------.
1562 | yybackup.  |
1563 `-----------*/
1564 yybackup:
1566   /* Do appropriate processing given the current state.  Read a
1567      lookahead token if we need one and don't already have one.  */
1569   /* First try to decide what to do without reference to lookahead token.  */
1570   yyn = yypact[yystate];
1571   if (yyn == YYPACT_NINF)
1572     goto yydefault;
1574   /* Not known => get a lookahead token if don't already have one.  */
1576   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
1577   if (yychar == YYEMPTY)
1578     {
1579       YYDPRINTF ((stderr, "Reading a token: "));
1580       yychar = YYLEX;
1581     }
1583   if (yychar <= YYEOF)
1584     {
1585       yychar = yytoken = YYEOF;
1586       YYDPRINTF ((stderr, "Now at end of input.\n"));
1587     }
1588   else
1589     {
1590       yytoken = YYTRANSLATE (yychar);
1591       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1592     }
1594   /* If the proper action on seeing token YYTOKEN is to reduce or to
1595      detect an error, take that action.  */
1596   yyn += yytoken;
1597   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1598     goto yydefault;
1599   yyn = yytable[yyn];
1600   if (yyn <= 0)
1601     {
1602       if (yyn == 0 || yyn == YYTABLE_NINF)
1603         goto yyerrlab;
1604       yyn = -yyn;
1605       goto yyreduce;
1606     }
1608   /* Count tokens shifted since error; after three, turn off error
1609      status.  */
1610   if (yyerrstatus)
1611     yyerrstatus--;
1613   /* Shift the lookahead token.  */
1614   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1616   /* Discard the shifted token.  */
1617   yychar = YYEMPTY;
1619   yystate = yyn;
1620   *++yyvsp = yylval;
1622   goto yynewstate;
1625 /*-----------------------------------------------------------.
1626 | yydefault -- do the default action for the current state.  |
1627 `-----------------------------------------------------------*/
1628 yydefault:
1629   yyn = yydefact[yystate];
1630   if (yyn == 0)
1631     goto yyerrlab;
1632   goto yyreduce;
1635 /*-----------------------------.
1636 | yyreduce -- Do a reduction.  |
1637 `-----------------------------*/
1638 yyreduce:
1639   /* yyn is the number of a rule to reduce with.  */
1640   yylen = yyr2[yyn];
1642   /* If YYLEN is nonzero, implement the default value of the action:
1643      `$$ = $1'.
1645      Otherwise, the following line sets YYVAL to garbage.
1646      This behavior is undocumented and Bison
1647      users should not rely upon it.  Assigning to YYVAL
1648      unconditionally makes the parser a bit smaller, and it avoids a
1649      GCC warning that YYVAL may be used uninitialized.  */
1650   yyval = yyvsp[1-yylen];
1653   YY_REDUCE_PRINT (yyn);
1654   switch (yyn)
1655     {
1656         case 4:
1658     { is_typedef = 0; is_extern = 0; current_name = NULL; decl_spec = NULL; ;}
1659     break;
1661   case 5:
1663     { free_list(*(yyvsp[(2) - (2)]), NULL); *(yyvsp[(2) - (2)]) = NULL; ;}
1664     break;
1666   case 6:
1668     { is_typedef = 1; ;}
1669     break;
1671   case 7:
1673     { (yyval) = (yyvsp[(4) - (4)]); ;}
1674     break;
1676   case 8:
1678     { is_typedef = 1; ;}
1679     break;
1681   case 9:
1683     { (yyval) = (yyvsp[(3) - (3)]); ;}
1684     break;
1686   case 14:
1688     { (yyval) = (yyvsp[(2) - (2)]); ;}
1689     break;
1691   case 15:
1693     { (yyval) = (yyvsp[(2) - (2)]); ;}
1694     break;
1696   case 16:
1698     { if (current_name) {
1699                     struct string_list *decl = (*(yyvsp[(3) - (3)]))->next;
1700                     (*(yyvsp[(3) - (3)]))->next = NULL;
1701                     add_symbol(current_name,
1702                                is_typedef ? SYM_TYPEDEF : SYM_NORMAL,
1703                                decl, is_extern);
1704                     current_name = NULL;
1705                   }
1706                   (yyval) = (yyvsp[(3) - (3)]);
1707                 ;}
1708     break;
1710   case 17:
1712     { (yyval) = NULL; ;}
1713     break;
1715   case 19:
1717     { struct string_list *decl = *(yyvsp[(1) - (1)]);
1718                   *(yyvsp[(1) - (1)]) = NULL;
1719                   add_symbol(current_name,
1720                              is_typedef ? SYM_TYPEDEF : SYM_NORMAL, decl, is_extern);
1721                   current_name = NULL;
1722                   (yyval) = (yyvsp[(1) - (1)]);
1723                 ;}
1724     break;
1726   case 20:
1728     { struct string_list *decl = *(yyvsp[(3) - (3)]);
1729                   *(yyvsp[(3) - (3)]) = NULL;
1730                   free_list(*(yyvsp[(2) - (3)]), NULL);
1731                   *(yyvsp[(2) - (3)]) = decl_spec;
1732                   add_symbol(current_name,
1733                              is_typedef ? SYM_TYPEDEF : SYM_NORMAL, decl, is_extern);
1734                   current_name = NULL;
1735                   (yyval) = (yyvsp[(3) - (3)]);
1736                 ;}
1737     break;
1739   case 21:
1741     { (yyval) = (yyvsp[(4) - (4)]) ? (yyvsp[(4) - (4)]) : (yyvsp[(3) - (4)]) ? (yyvsp[(3) - (4)]) : (yyvsp[(2) - (4)]) ? (yyvsp[(2) - (4)]) : (yyvsp[(1) - (4)]); ;}
1742     break;
1744   case 22:
1746     { decl_spec = NULL; ;}
1747     break;
1749   case 24:
1751     { decl_spec = *(yyvsp[(1) - (1)]); ;}
1752     break;
1754   case 25:
1756     { decl_spec = *(yyvsp[(2) - (2)]); ;}
1757     break;
1759   case 26:
1761     { /* Version 2 checksumming ignores storage class, as that
1762                      is really irrelevant to the linkage.  */
1763                   remove_node((yyvsp[(1) - (1)]));
1764                   (yyval) = (yyvsp[(1) - (1)]);
1765                 ;}
1766     break;
1768   case 31:
1770     { is_extern = 1; (yyval) = (yyvsp[(1) - (1)]); ;}
1771     break;
1773   case 32:
1775     { is_extern = 0; (yyval) = (yyvsp[(1) - (1)]); ;}
1776     break;
1778   case 37:
1780     { remove_node((yyvsp[(1) - (2)])); (*(yyvsp[(2) - (2)]))->tag = SYM_STRUCT; (yyval) = (yyvsp[(2) - (2)]); ;}
1781     break;
1783   case 38:
1785     { remove_node((yyvsp[(1) - (2)])); (*(yyvsp[(2) - (2)]))->tag = SYM_UNION; (yyval) = (yyvsp[(2) - (2)]); ;}
1786     break;
1788   case 39:
1790     { remove_node((yyvsp[(1) - (2)])); (*(yyvsp[(2) - (2)]))->tag = SYM_ENUM; (yyval) = (yyvsp[(2) - (2)]); ;}
1791     break;
1793   case 40:
1795     { struct string_list *s = *(yyvsp[(3) - (3)]), *i = *(yyvsp[(2) - (3)]), *r;
1796                   r = copy_node(i); r->tag = SYM_STRUCT;
1797                   r->next = (*(yyvsp[(1) - (3)]))->next; *(yyvsp[(3) - (3)]) = r; (*(yyvsp[(1) - (3)]))->next = NULL;
1798                   add_symbol(i->string, SYM_STRUCT, s, is_extern);
1799                   (yyval) = (yyvsp[(3) - (3)]);
1800                 ;}
1801     break;
1803   case 41:
1805     { struct string_list *s = *(yyvsp[(3) - (3)]), *i = *(yyvsp[(2) - (3)]), *r;
1806                   r = copy_node(i); r->tag = SYM_UNION;
1807                   r->next = (*(yyvsp[(1) - (3)]))->next; *(yyvsp[(3) - (3)]) = r; (*(yyvsp[(1) - (3)]))->next = NULL;
1808                   add_symbol(i->string, SYM_UNION, s, is_extern);
1809                   (yyval) = (yyvsp[(3) - (3)]);
1810                 ;}
1811     break;
1813   case 42:
1815     { struct string_list *s = *(yyvsp[(3) - (3)]), *i = *(yyvsp[(2) - (3)]), *r;
1816                   r = copy_node(i); r->tag = SYM_ENUM;
1817                   r->next = (*(yyvsp[(1) - (3)]))->next; *(yyvsp[(3) - (3)]) = r; (*(yyvsp[(1) - (3)]))->next = NULL;
1818                   add_symbol(i->string, SYM_ENUM, s, is_extern);
1819                   (yyval) = (yyvsp[(3) - (3)]);
1820                 ;}
1821     break;
1823   case 43:
1825     { add_symbol(NULL, SYM_ENUM, NULL, 0); (yyval) = (yyvsp[(2) - (2)]); ;}
1826     break;
1828   case 44:
1830     { (yyval) = (yyvsp[(2) - (2)]); ;}
1831     break;
1833   case 45:
1835     { (yyval) = (yyvsp[(2) - (2)]); ;}
1836     break;
1838   case 56:
1840     { (*(yyvsp[(1) - (1)]))->tag = SYM_TYPEDEF; (yyval) = (yyvsp[(1) - (1)]); ;}
1841     break;
1843   case 57:
1845     { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); ;}
1846     break;
1848   case 58:
1850     { (yyval) = NULL; ;}
1851     break;
1853   case 61:
1855     { (yyval) = (yyvsp[(2) - (2)]); ;}
1856     break;
1858   case 65:
1860     { /* restrict has no effect in prototypes so ignore it */
1861                   remove_node((yyvsp[(1) - (1)]));
1862                   (yyval) = (yyvsp[(1) - (1)]);
1863                 ;}
1864     break;
1866   case 66:
1868     { (yyval) = (yyvsp[(2) - (2)]); ;}
1869     break;
1871   case 68:
1873     { if (current_name != NULL) {
1874                     error_with_pos("unexpected second declaration name");
1875                     YYERROR;
1876                   } else {
1877                     current_name = (*(yyvsp[(1) - (1)]))->string;
1878                     (yyval) = (yyvsp[(1) - (1)]);
1879                   }
1880                 ;}
1881     break;
1883   case 69:
1885     { (yyval) = (yyvsp[(4) - (4)]); ;}
1886     break;
1888   case 70:
1890     { (yyval) = (yyvsp[(4) - (4)]); ;}
1891     break;
1893   case 71:
1895     { (yyval) = (yyvsp[(2) - (2)]); ;}
1896     break;
1898   case 72:
1900     { (yyval) = (yyvsp[(3) - (3)]); ;}
1901     break;
1903   case 73:
1905     { (yyval) = (yyvsp[(3) - (3)]); ;}
1906     break;
1908   case 74:
1910     { (yyval) = (yyvsp[(2) - (2)]); ;}
1911     break;
1913   case 78:
1915     { (yyval) = (yyvsp[(4) - (4)]); ;}
1916     break;
1918   case 79:
1920     { (yyval) = (yyvsp[(4) - (4)]); ;}
1921     break;
1923   case 80:
1925     { (yyval) = (yyvsp[(2) - (2)]); ;}
1926     break;
1928   case 81:
1930     { (yyval) = (yyvsp[(3) - (3)]); ;}
1931     break;
1933   case 82:
1935     { (yyval) = (yyvsp[(3) - (3)]); ;}
1936     break;
1938   case 83:
1940     { (yyval) = (yyvsp[(2) - (2)]); ;}
1941     break;
1943   case 85:
1945     { (yyval) = (yyvsp[(3) - (3)]); ;}
1946     break;
1948   case 86:
1950     { (yyval) = NULL; ;}
1951     break;
1953   case 89:
1955     { (yyval) = (yyvsp[(3) - (3)]); ;}
1956     break;
1958   case 90:
1960     { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); ;}
1961     break;
1963   case 91:
1965     { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); ;}
1966     break;
1968   case 93:
1970     { (yyval) = NULL; ;}
1971     break;
1973   case 94:
1975     { /* For version 2 checksums, we don't want to remember
1976                      private parameter names.  */
1977                   remove_node((yyvsp[(1) - (1)]));
1978                   (yyval) = (yyvsp[(1) - (1)]);
1979                 ;}
1980     break;
1982   case 95:
1984     { remove_node((yyvsp[(1) - (1)]));
1985                   (yyval) = (yyvsp[(1) - (1)]);
1986                 ;}
1987     break;
1989   case 96:
1991     { (yyval) = (yyvsp[(4) - (4)]); ;}
1992     break;
1994   case 97:
1996     { (yyval) = (yyvsp[(4) - (4)]); ;}
1997     break;
1999   case 98:
2001     { (yyval) = (yyvsp[(2) - (2)]); ;}
2002     break;
2004   case 99:
2006     { (yyval) = (yyvsp[(3) - (3)]); ;}
2007     break;
2009   case 100:
2011     { (yyval) = (yyvsp[(3) - (3)]); ;}
2012     break;
2014   case 101:
2016     { struct string_list *decl = *(yyvsp[(2) - (3)]);
2017                   *(yyvsp[(2) - (3)]) = NULL;
2018                   add_symbol(current_name, SYM_NORMAL, decl, is_extern);
2019                   (yyval) = (yyvsp[(3) - (3)]);
2020                 ;}
2021     break;
2023   case 102:
2025     { (yyval) = NULL; ;}
2026     break;
2028   case 104:
2030     { remove_list((yyvsp[(2) - (2)]), &(*(yyvsp[(1) - (2)]))->next); (yyval) = (yyvsp[(2) - (2)]); ;}
2031     break;
2033   case 105:
2035     { (yyval) = (yyvsp[(3) - (3)]); ;}
2036     break;
2038   case 106:
2040     { (yyval) = (yyvsp[(3) - (3)]); ;}
2041     break;
2043   case 107:
2045     { (yyval) = NULL; ;}
2046     break;
2048   case 110:
2050     { (yyval) = (yyvsp[(2) - (2)]); ;}
2051     break;
2053   case 111:
2055     { (yyval) = (yyvsp[(3) - (3)]); ;}
2056     break;
2058   case 112:
2060     { (yyval) = (yyvsp[(2) - (2)]); ;}
2061     break;
2063   case 113:
2065     { (yyval) = NULL; ;}
2066     break;
2068   case 116:
2070     { (yyval) = (yyvsp[(3) - (3)]); ;}
2071     break;
2073   case 117:
2075     { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); ;}
2076     break;
2078   case 118:
2080     { (yyval) = (yyvsp[(2) - (2)]); ;}
2081     break;
2083   case 120:
2085     { (yyval) = (yyvsp[(2) - (2)]); ;}
2086     break;
2088   case 121:
2090     { (yyval) = NULL; ;}
2091     break;
2093   case 123:
2095     { (yyval) = (yyvsp[(3) - (3)]); ;}
2096     break;
2098   case 124:
2100     { (yyval) = (yyvsp[(4) - (4)]); ;}
2101     break;
2103   case 127:
2105     {
2106                         const char *name = strdup((*(yyvsp[(1) - (1)]))->string);
2107                         add_symbol(name, SYM_ENUM_CONST, NULL, 0);
2108                 ;}
2109     break;
2111   case 128:
2113     {
2114                         const char *name = strdup((*(yyvsp[(1) - (3)]))->string);
2115                         struct string_list *expr = copy_list_range(*(yyvsp[(3) - (3)]), *(yyvsp[(2) - (3)]));
2116                         add_symbol(name, SYM_ENUM_CONST, expr, 0);
2117                 ;}
2118     break;
2120   case 129:
2122     { (yyval) = (yyvsp[(2) - (2)]); ;}
2123     break;
2125   case 130:
2127     { (yyval) = NULL; ;}
2128     break;
2130   case 132:
2132     { export_symbol((*(yyvsp[(3) - (5)]))->string); (yyval) = (yyvsp[(5) - (5)]); ;}
2133     break;
2137       default: break;
2138     }
2139   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2141   YYPOPSTACK (yylen);
2142   yylen = 0;
2143   YY_STACK_PRINT (yyss, yyssp);
2145   *++yyvsp = yyval;
2147   /* Now `shift' the result of the reduction.  Determine what state
2148      that goes to, based on the state we popped back to and the rule
2149      number reduced by.  */
2151   yyn = yyr1[yyn];
2153   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2154   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2155     yystate = yytable[yystate];
2156   else
2157     yystate = yydefgoto[yyn - YYNTOKENS];
2159   goto yynewstate;
2162 /*------------------------------------.
2163 | yyerrlab -- here on detecting error |
2164 `------------------------------------*/
2165 yyerrlab:
2166   /* If not already recovering from an error, report this error.  */
2167   if (!yyerrstatus)
2168     {
2169       ++yynerrs;
2170 #if ! YYERROR_VERBOSE
2171       yyerror (YY_("syntax error"));
2172 #else
2173       {
2174         YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
2175         if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
2176           {
2177             YYSIZE_T yyalloc = 2 * yysize;
2178             if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
2179               yyalloc = YYSTACK_ALLOC_MAXIMUM;
2180             if (yymsg != yymsgbuf)
2181               YYSTACK_FREE (yymsg);
2182             yymsg = (char *) YYSTACK_ALLOC (yyalloc);
2183             if (yymsg)
2184               yymsg_alloc = yyalloc;
2185             else
2186               {
2187                 yymsg = yymsgbuf;
2188                 yymsg_alloc = sizeof yymsgbuf;
2189               }
2190           }
2192         if (0 < yysize && yysize <= yymsg_alloc)
2193           {
2194             (void) yysyntax_error (yymsg, yystate, yychar);
2195             yyerror (yymsg);
2196           }
2197         else
2198           {
2199             yyerror (YY_("syntax error"));
2200             if (yysize != 0)
2201               goto yyexhaustedlab;
2202           }
2203       }
2204 #endif
2205     }
2209   if (yyerrstatus == 3)
2210     {
2211       /* If just tried and failed to reuse lookahead token after an
2212          error, discard it.  */
2214       if (yychar <= YYEOF)
2215         {
2216           /* Return failure if at end of input.  */
2217           if (yychar == YYEOF)
2218             YYABORT;
2219         }
2220       else
2221         {
2222           yydestruct ("Error: discarding",
2223                       yytoken, &yylval);
2224           yychar = YYEMPTY;
2225         }
2226     }
2228   /* Else will try to reuse lookahead token after shifting the error
2229      token.  */
2230   goto yyerrlab1;
2233 /*---------------------------------------------------.
2234 | yyerrorlab -- error raised explicitly by YYERROR.  |
2235 `---------------------------------------------------*/
2236 yyerrorlab:
2238   /* Pacify compilers like GCC when the user code never invokes
2239      YYERROR and the label yyerrorlab therefore never appears in user
2240      code.  */
2241   if (/*CONSTCOND*/ 0)
2242      goto yyerrorlab;
2244   /* Do not reclaim the symbols of the rule which action triggered
2245      this YYERROR.  */
2246   YYPOPSTACK (yylen);
2247   yylen = 0;
2248   YY_STACK_PRINT (yyss, yyssp);
2249   yystate = *yyssp;
2250   goto yyerrlab1;
2253 /*-------------------------------------------------------------.
2254 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
2255 `-------------------------------------------------------------*/
2256 yyerrlab1:
2257   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
2259   for (;;)
2260     {
2261       yyn = yypact[yystate];
2262       if (yyn != YYPACT_NINF)
2263         {
2264           yyn += YYTERROR;
2265           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2266             {
2267               yyn = yytable[yyn];
2268               if (0 < yyn)
2269                 break;
2270             }
2271         }
2273       /* Pop the current state because it cannot handle the error token.  */
2274       if (yyssp == yyss)
2275         YYABORT;
2278       yydestruct ("Error: popping",
2279                   yystos[yystate], yyvsp);
2280       YYPOPSTACK (1);
2281       yystate = *yyssp;
2282       YY_STACK_PRINT (yyss, yyssp);
2283     }
2285   *++yyvsp = yylval;
2288   /* Shift the error token.  */
2289   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2291   yystate = yyn;
2292   goto yynewstate;
2295 /*-------------------------------------.
2296 | yyacceptlab -- YYACCEPT comes here.  |
2297 `-------------------------------------*/
2298 yyacceptlab:
2299   yyresult = 0;
2300   goto yyreturn;
2302 /*-----------------------------------.
2303 | yyabortlab -- YYABORT comes here.  |
2304 `-----------------------------------*/
2305 yyabortlab:
2306   yyresult = 1;
2307   goto yyreturn;
2309 #if !defined(yyoverflow) || YYERROR_VERBOSE
2310 /*-------------------------------------------------.
2311 | yyexhaustedlab -- memory exhaustion comes here.  |
2312 `-------------------------------------------------*/
2313 yyexhaustedlab:
2314   yyerror (YY_("memory exhausted"));
2315   yyresult = 2;
2316   /* Fall through.  */
2317 #endif
2319 yyreturn:
2320   if (yychar != YYEMPTY)
2321      yydestruct ("Cleanup: discarding lookahead",
2322                  yytoken, &yylval);
2323   /* Do not reclaim the symbols of the rule which action triggered
2324      this YYABORT or YYACCEPT.  */
2325   YYPOPSTACK (yylen);
2326   YY_STACK_PRINT (yyss, yyssp);
2327   while (yyssp != yyss)
2328     {
2329       yydestruct ("Cleanup: popping",
2330                   yystos[*yyssp], yyvsp);
2331       YYPOPSTACK (1);
2332     }
2333 #ifndef yyoverflow
2334   if (yyss != yyssa)
2335     YYSTACK_FREE (yyss);
2336 #endif
2337 #if YYERROR_VERBOSE
2338   if (yymsg != yymsgbuf)
2339     YYSTACK_FREE (yymsg);
2340 #endif
2341   /* Make sure YYID is used.  */
2342   return YYID (yyresult);
2349 static void
2350 yyerror(const char *e)
2352   error_with_pos("%s", e);