00001
00002
00003
00004
00005
00006
00007
00008 #define YYBISON 1
00009
00010 # define ENT_TYPEDEF_STRUCT 257
00011 # define ENT_STRUCT 258
00012 # define ENT_EXTERNSTATIC 259
00013 # define ENT_YACCUNION 260
00014 # define GTY_TOKEN 261
00015 # define UNION 262
00016 # define STRUCT 263
00017 # define ENUM 264
00018 # define ALIAS 265
00019 # define PARAM_IS 266
00020 # define NUM 267
00021 # define PERCENTPERCENT 268
00022 # define SCALAR 269
00023 # define ID 270
00024 # define STRING 271
00025 # define ARRAY 272
00026 # define PERCENT_ID 273
00027 # define CHAR 274
00028
00029 #line 22 "gengtype-yacc.y"
00030
00031 #include "hconfig.h"
00032 #include "system.h"
00033 #include "gengtype.h"
00034 #define YYERROR_VERBOSE
00035
00036 #line 29 "gengtype-yacc.y"
00037 #ifndef YYSTYPE
00038 typedef union {
00039 type_p t;
00040 pair_p p;
00041 options_p o;
00042 const char *s;
00043 } yystype;
00044 # define YYSTYPE yystype
00045 # define YYSTYPE_IS_TRIVIAL 1
00046 #endif
00047 #ifndef YYDEBUG
00048 # define YYDEBUG 0
00049 #endif
00050
00051
00052
00053 #define YYFINAL 112
00054 #define YYFLAG -32768
00055 #define YYNTBASE 32
00056
00057
00058 #define YYTRANSLATE(x) ((unsigned)(x) <= 274 ? yytranslate[x] : 52)
00059
00060
00061 static const char yytranslate[] =
00062 {
00063 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00064 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00065 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00066 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00067 30, 31, 28, 2, 29, 2, 2, 2, 2, 2,
00068 2, 2, 2, 2, 2, 2, 2, 2, 27, 23,
00069 25, 24, 26, 2, 2, 2, 2, 2, 2, 2,
00070 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00071 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00072 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00073 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00074 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00075 2, 2, 2, 21, 2, 22, 2, 2, 2, 2,
00076 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00077 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00078 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00079 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00080 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00081 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00082 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00083 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00084 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00085 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00086 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00087 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00088 2, 2, 2, 2, 2, 2, 1, 3, 4, 5,
00089 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
00090 16, 17, 18, 19, 20
00091 };
00092
00093 #if YYDEBUG
00094 static const short yyprhs[] =
00095 {
00096 0, 0, 1, 4, 7, 10, 11, 20, 21, 29,
00097 35, 42, 50, 52, 54, 56, 63, 64, 68, 75,
00098 76, 79, 82, 83, 90, 97, 105, 106, 109, 112,
00099 114, 116, 119, 125, 128, 134, 137, 140, 146, 147,
00100 153, 157, 160, 161, 163, 170, 172, 174, 179, 184,
00101 186, 190, 191
00102 };
00103 static const short yyrhs[] =
00104 {
00105 -1, 33, 32, 0, 36, 32, 0, 39, 32, 0,
00106 0, 3, 47, 21, 42, 22, 16, 34, 23, 0,
00107 0, 4, 47, 21, 42, 22, 35, 23, 0, 5,
00108 47, 37, 16, 38, 0, 5, 47, 37, 16, 18,
00109 38, 0, 5, 47, 37, 16, 18, 18, 38, 0,
00110 44, 0, 23, 0, 24, 0, 6, 47, 42, 22,
00111 40, 14, 0, 0, 40, 19, 41, 0, 40, 19,
00112 25, 16, 26, 41, 0, 0, 41, 16, 0, 41,
00113 20, 0, 0, 44, 46, 16, 43, 23, 42, 0,
00114 44, 46, 16, 18, 23, 42, 0, 44, 46, 16,
00115 18, 18, 23, 42, 0, 0, 27, 13, 0, 27,
00116 16, 0, 15, 0, 16, 0, 44, 28, 0, 9,
00117 16, 21, 42, 22, 0, 9, 16, 0, 8, 16,
00118 21, 42, 22, 0, 8, 16, 0, 10, 16, 0,
00119 10, 16, 21, 45, 22, 0, 0, 16, 24, 13,
00120 29, 45, 0, 16, 29, 45, 0, 16, 45, 0,
00121 0, 47, 0, 7, 30, 30, 51, 31, 31, 0,
00122 11, 0, 12, 0, 48, 30, 44, 31, 0, 16,
00123 30, 17, 31, 0, 49, 0, 50, 29, 49, 0,
00124 0, 50, 0
00125 };
00126
00127 #endif
00128
00129 #if YYDEBUG
00130
00131 static const short yyrline[] =
00132 {
00133 0, 62, 63, 64, 65, 68, 68, 77, 77, 87,
00134 92, 97, 105, 112, 113, 116, 123, 125, 138, 156,
00135 158, 169, 182, 183, 193, 203, 215, 216, 217, 220,
00136 222, 224, 226, 231, 233, 238, 240, 242, 246, 247,
00137 249, 251, 255, 256, 259, 263, 265, 269, 276, 285,
00138 290, 297, 298
00139 };
00140 #endif
00141
00142
00143 #if (YYDEBUG) || defined YYERROR_VERBOSE
00144
00145
00146 static const char *const yytname[] =
00147 {
00148 "$", "error", "$undefined.", "ENT_TYPEDEF_STRUCT", "ENT_STRUCT",
00149 "ENT_EXTERNSTATIC", "ENT_YACCUNION", "GTY_TOKEN", "UNION", "STRUCT",
00150 "ENUM", "ALIAS", "PARAM_IS", "NUM", "\"%%\"", "SCALAR", "ID", "STRING",
00151 "ARRAY", "PERCENT_ID", "CHAR", "'{'", "'}'", "';'", "'='", "'<'", "'>'",
00152 "':'", "'*'", "','", "'('", "')'", "start", "typedef_struct", "@1",
00153 "@2", "externstatic", "lasttype", "semiequal", "yacc_union",
00154 "yacc_typematch", "yacc_ids", "struct_fields", "bitfieldopt", "type",
00155 "enum_items", "optionsopt", "options", "type_option", "option",
00156 "optionseq", "optionseqopt", 0
00157 };
00158 #endif
00159
00160
00161 static const short yyr1[] =
00162 {
00163 0, 32, 32, 32, 32, 34, 33, 35, 33, 36,
00164 36, 36, 37, 38, 38, 39, 40, 40, 40, 41,
00165 41, 41, 42, 42, 42, 42, 43, 43, 43, 44,
00166 44, 44, 44, 44, 44, 44, 44, 44, 45, 45,
00167 45, 45, 46, 46, 47, 48, 48, 49, 49, 50,
00168 50, 51, 51
00169 };
00170
00171
00172 static const short yyr2[] =
00173 {
00174 0, 0, 2, 2, 2, 0, 8, 0, 7, 5,
00175 6, 7, 1, 1, 1, 6, 0, 3, 6, 0,
00176 2, 2, 0, 6, 6, 7, 0, 2, 2, 1,
00177 1, 2, 5, 2, 5, 2, 2, 5, 0, 5,
00178 3, 2, 0, 1, 6, 1, 1, 4, 4, 1,
00179 3, 0, 1
00180 };
00181
00182
00183
00184
00185 static const short yydefact[] =
00186 {
00187 1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
00188 0, 0, 22, 2, 3, 4, 0, 22, 22, 0,
00189 0, 0, 29, 30, 0, 12, 0, 42, 51, 0,
00190 0, 35, 33, 36, 0, 31, 16, 0, 43, 45,
00191 46, 0, 0, 49, 52, 0, 0, 7, 22, 22,
00192 38, 0, 13, 14, 9, 0, 26, 0, 0, 0,
00193 0, 5, 0, 0, 0, 38, 0, 0, 10, 15,
00194 19, 0, 0, 0, 0, 0, 50, 44, 0, 8,
00195 34, 32, 0, 38, 41, 37, 11, 0, 17, 0,
00196 22, 27, 28, 22, 48, 47, 6, 0, 40, 0,
00197 20, 21, 22, 24, 23, 38, 19, 25, 39, 18,
00198 0, 0, 0
00199 };
00200
00201 static const short yydefgoto[] =
00202 {
00203 13, 5, 78, 62, 6, 24, 54, 7, 55, 88,
00204 26, 73, 27, 66, 37, 9, 42, 43, 44, 45
00205 };
00206
00207 static const short yypact[] =
00208 {
00209 54, 7, 7, 7, 7, 54, 54, 54, 8, 4,
00210 9, 25, 25,-32768,-32768,-32768, 16, 25, 25, 37,
00211 38, 46,-32768,-32768, 47, 40, 1, 0, 39, 43,
00212 44, 48, 49, 50, 21,-32768,-32768, 51,-32768,-32768,
00213 -32768, 42, 45,-32768, 52, 53, 58,-32768, 25, 25,
00214 61, 24,-32768,-32768,-32768, -3, -8, 62, 25, 39,
00215 55,-32768, 57, 56, 60, -7, 65, 13,-32768,-32768,
00216 63, -5, -1, 66, 59, 33,-32768,-32768, 68,-32768,
00217 -32768,-32768, 70, 61,-32768,-32768,-32768, 76, 36, 71,
00218 25,-32768,-32768, 25,-32768,-32768,-32768, 64,-32768, 69,
00219 -32768,-32768, 25,-32768,-32768, 61,-32768,-32768,-32768, 36,
00220 96, 97,-32768
00221 };
00222
00223 static const short yypgoto[] =
00224 {
00225 20,-32768,-32768,-32768,-32768,-32768, -43,-32768,-32768, -6,
00226 -17,-32768, -9, -62,-32768, 2,-32768, 67,-32768,-32768
00227 };
00228
00229
00230 #define YYLAST 126
00231
00232
00233 static const short yytable[] =
00234 {
00235 29, 30, 25, 84, 10, 11, 12, 8, 68, 65,
00236 71, 69, 91, 89, 8, 92, 70, 82, 90, 72,
00237 110, 98, 83, 36, 86, 17, 14, 15, 35, 38,
00238 18, 63, 64, 19, 20, 21, 52, 53, 16, 51,
00239 22, 23, 67, 108, 52, 53, 28, 52, 53, 75,
00240 39, 40, 100, 31, 32, 41, 101, 1, 2, 3,
00241 4, 35, 33, 34, 95, 46, 47, 56, 35, 48,
00242 49, 50, 57, 103, 61, 58, 104, 65, 80, 74,
00243 79, 59, 81, 97, 60, 107, 77, 85, 87, 93,
00244 94, 96, 99, 105, 102, 106, 111, 112, 0, 0,
00245 109, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00246 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00247 0, 0, 0, 0, 0, 0, 76
00248 };
00249
00250 static const short yycheck[] =
00251 {
00252 17, 18, 11, 65, 2, 3, 4, 7, 51, 16,
00253 18, 14, 13, 18, 7, 16, 19, 24, 23, 27,
00254 0, 83, 29, 22, 67, 21, 6, 7, 28, 27,
00255 21, 48, 49, 8, 9, 10, 23, 24, 30, 18,
00256 15, 16, 18, 105, 23, 24, 30, 23, 24, 58,
00257 11, 12, 16, 16, 16, 16, 20, 3, 4, 5,
00258 6, 28, 16, 16, 31, 22, 22, 16, 28, 21,
00259 21, 21, 30, 90, 16, 30, 93, 16, 22, 17,
00260 23, 29, 22, 13, 31, 102, 31, 22, 25, 23,
00261 31, 23, 16, 29, 23, 26, 0, 0, -1, -1,
00262 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00263 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00264 -1, -1, -1, -1, -1, -1, 59
00265 };
00266
00267 #line 3 "/usr/share/bison/bison.simple"
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306 #if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
00307
00308
00309
00310 # if YYSTACK_USE_ALLOCA
00311 # define YYSTACK_ALLOC alloca
00312 # else
00313 # ifndef YYSTACK_USE_ALLOCA
00314 # if defined (alloca) || defined (_ALLOCA_H)
00315 # define YYSTACK_ALLOC alloca
00316 # else
00317 # ifdef __GNUC__
00318 # define YYSTACK_ALLOC __builtin_alloca
00319 # endif
00320 # endif
00321 # endif
00322 # endif
00323
00324 # ifdef YYSTACK_ALLOC
00325
00326 # define YYSTACK_FREE(Ptr) do { ; } while (0)
00327 # else
00328 # if defined (__STDC__) || defined (__cplusplus)
00329 # include <stdlib.h>
00330 # define YYSIZE_T size_t
00331 # endif
00332 # define YYSTACK_ALLOC malloc
00333 # define YYSTACK_FREE free
00334 # endif
00335 #endif
00336
00337
00338 #if (! defined (yyoverflow) \
00339 && (! defined (__cplusplus) \
00340 || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
00341
00342
00343 union yyalloc
00344 {
00345 short yyss;
00346 YYSTYPE yyvs;
00347 # if YYLSP_NEEDED
00348 YYLTYPE yyls;
00349 # endif
00350 };
00351
00352
00353 # define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
00354
00355
00356
00357 # if YYLSP_NEEDED
00358 # define YYSTACK_BYTES(N) \
00359 ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
00360 + 2 * YYSTACK_GAP_MAX)
00361 # else
00362 # define YYSTACK_BYTES(N) \
00363 ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
00364 + YYSTACK_GAP_MAX)
00365 # endif
00366
00367
00368
00369 # ifndef YYCOPY
00370 # if 1 < __GNUC__
00371 # define YYCOPY(To, From, Count) \
00372 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
00373 # else
00374 # define YYCOPY(To, From, Count) \
00375 do \
00376 { \
00377 register YYSIZE_T yyi; \
00378 for (yyi = 0; yyi < (Count); yyi++) \
00379 (To)[yyi] = (From)[yyi]; \
00380 } \
00381 while (0)
00382 # endif
00383 # endif
00384
00385
00386
00387
00388
00389
00390 # define YYSTACK_RELOCATE(Stack) \
00391 do \
00392 { \
00393 YYSIZE_T yynewbytes; \
00394 YYCOPY (&yyptr->Stack, Stack, yysize); \
00395 Stack = &yyptr->Stack; \
00396 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \
00397 yyptr += yynewbytes / sizeof (*yyptr); \
00398 } \
00399 while (0)
00400
00401 #endif
00402
00403
00404 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
00405 # define YYSIZE_T __SIZE_TYPE__
00406 #endif
00407 #if ! defined (YYSIZE_T) && defined (size_t)
00408 # define YYSIZE_T size_t
00409 #endif
00410 #if ! defined (YYSIZE_T)
00411 # if defined (__STDC__) || defined (__cplusplus)
00412 # include <stddef.h>
00413 # define YYSIZE_T size_t
00414 # endif
00415 #endif
00416 #if ! defined (YYSIZE_T)
00417 # define YYSIZE_T unsigned int
00418 #endif
00419
00420 #define yyerrok (yyerrstatus = 0)
00421 #define yyclearin (yychar = YYEMPTY)
00422 #define YYEMPTY -2
00423 #define YYEOF 0
00424 #define YYACCEPT goto yyacceptlab
00425 #define YYABORT goto yyabortlab
00426 #define YYERROR goto yyerrlab1
00427
00428
00429
00430 #define YYFAIL goto yyerrlab
00431 #define YYRECOVERING() (!!yyerrstatus)
00432 #define YYBACKUP(Token, Value) \
00433 do \
00434 if (yychar == YYEMPTY && yylen == 1) \
00435 { \
00436 yychar = (Token); \
00437 yylval = (Value); \
00438 yychar1 = YYTRANSLATE (yychar); \
00439 YYPOPSTACK; \
00440 goto yybackup; \
00441 } \
00442 else \
00443 { \
00444 yyerror ("syntax error: cannot back up"); \
00445 YYERROR; \
00446 } \
00447 while (0)
00448
00449 #define YYTERROR 1
00450 #define YYERRCODE 256
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460 #ifndef YYLLOC_DEFAULT
00461 # define YYLLOC_DEFAULT(Current, Rhs, N) \
00462 Current.last_line = Rhs[N].last_line; \
00463 Current.last_column = Rhs[N].last_column;
00464 #endif
00465
00466
00467
00468
00469 #if YYPURE
00470 # if YYLSP_NEEDED
00471 # ifdef YYLEX_PARAM
00472 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
00473 # else
00474 # define YYLEX yylex (&yylval, &yylloc)
00475 # endif
00476 # else
00477 # ifdef YYLEX_PARAM
00478 # define YYLEX yylex (&yylval, YYLEX_PARAM)
00479 # else
00480 # define YYLEX yylex (&yylval)
00481 # endif
00482 # endif
00483 #else
00484 # define YYLEX yylex ()
00485 #endif
00486
00487
00488
00489 #if YYDEBUG
00490
00491 # ifndef YYFPRINTF
00492 # include <stdio.h>
00493 # define YYFPRINTF fprintf
00494 # endif
00495
00496 # define YYDPRINTF(Args) \
00497 do { \
00498 if (yydebug) \
00499 YYFPRINTF Args; \
00500 } while (0)
00501
00502
00503 int yydebug;
00504 #else
00505 # define YYDPRINTF(Args)
00506 #endif
00507
00508
00509 #ifndef YYINITDEPTH
00510 # define YYINITDEPTH 200
00511 #endif
00512
00513
00514
00515
00516
00517
00518
00519
00520 #if YYMAXDEPTH == 0
00521 # undef YYMAXDEPTH
00522 #endif
00523
00524 #ifndef YYMAXDEPTH
00525 # define YYMAXDEPTH 10000
00526 #endif
00527
00528 #ifdef YYERROR_VERBOSE
00529
00530 # ifndef yystrlen
00531 # if defined (__GLIBC__) && defined (_STRING_H)
00532 # define yystrlen strlen
00533 # else
00534
00535 static YYSIZE_T
00536 # if defined (__STDC__) || defined (__cplusplus)
00537 yystrlen (const char *yystr)
00538 # else
00539 yystrlen (yystr)
00540 const char *yystr;
00541 # endif
00542 {
00543 register const char *yys = yystr;
00544
00545 while (*yys++ != '\0')
00546 continue;
00547
00548 return yys - yystr - 1;
00549 }
00550 # endif
00551 # endif
00552
00553 # ifndef yystpcpy
00554 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
00555 # define yystpcpy stpcpy
00556 # else
00557
00558
00559 static char *
00560 # if defined (__STDC__) || defined (__cplusplus)
00561 yystpcpy (char *yydest, const char *yysrc)
00562 # else
00563 yystpcpy (yydest, yysrc)
00564 char *yydest;
00565 const char *yysrc;
00566 # endif
00567 {
00568 register char *yyd = yydest;
00569 register const char *yys = yysrc;
00570
00571 while ((*yyd++ = *yys++) != '\0')
00572 continue;
00573
00574 return yyd - 1;
00575 }
00576 # endif
00577 # endif
00578 #endif
00579
00580 #line 315 "/usr/share/bison/bison.simple"
00581
00582
00583
00584
00585
00586
00587
00588
00589 #ifdef YYPARSE_PARAM
00590 # if defined (__STDC__) || defined (__cplusplus)
00591 # define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
00592 # define YYPARSE_PARAM_DECL
00593 # else
00594 # define YYPARSE_PARAM_ARG YYPARSE_PARAM
00595 # define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
00596 # endif
00597 #else
00598 # define YYPARSE_PARAM_ARG
00599 # define YYPARSE_PARAM_DECL
00600 #endif
00601
00602
00603 #ifdef __GNUC__
00604 # ifdef YYPARSE_PARAM
00605 int yyparse (void *);
00606 # else
00607 int yyparse (void);
00608 # endif
00609 #endif
00610
00611
00612
00613
00614 #define YY_DECL_NON_LSP_VARIABLES \
00615 \
00616 int yychar; \
00617 \
00618 \
00619 YYSTYPE yylval; \
00620 \
00621 \
00622 int yynerrs;
00623
00624 #if YYLSP_NEEDED
00625 # define YY_DECL_VARIABLES \
00626 YY_DECL_NON_LSP_VARIABLES \
00627 \
00628 \
00629 YYLTYPE yylloc;
00630 #else
00631 # define YY_DECL_VARIABLES \
00632 YY_DECL_NON_LSP_VARIABLES
00633 #endif
00634
00635
00636
00637
00638 #if !YYPURE
00639 YY_DECL_VARIABLES
00640 #endif
00641
00642 int
00643 yyparse (YYPARSE_PARAM_ARG)
00644 YYPARSE_PARAM_DECL
00645 {
00646
00647 #if YYPURE
00648 YY_DECL_VARIABLES
00649 #endif
00650
00651 register int yystate;
00652 register int yyn;
00653 int yyresult;
00654
00655 int yyerrstatus;
00656
00657 int yychar1 = 0;
00658
00659
00660
00661
00662
00663
00664
00665
00666
00667
00668 short yyssa[YYINITDEPTH];
00669 short *yyss = yyssa;
00670 register short *yyssp;
00671
00672
00673 YYSTYPE yyvsa[YYINITDEPTH];
00674 YYSTYPE *yyvs = yyvsa;
00675 register YYSTYPE *yyvsp;
00676
00677 #if YYLSP_NEEDED
00678
00679 YYLTYPE yylsa[YYINITDEPTH];
00680 YYLTYPE *yyls = yylsa;
00681 YYLTYPE *yylsp;
00682 #endif
00683
00684 #if YYLSP_NEEDED
00685 # define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
00686 #else
00687 # define YYPOPSTACK (yyvsp--, yyssp--)
00688 #endif
00689
00690 YYSIZE_T yystacksize = YYINITDEPTH;
00691
00692
00693
00694
00695 YYSTYPE yyval;
00696 #if YYLSP_NEEDED
00697 YYLTYPE yyloc;
00698 #endif
00699
00700
00701
00702 int yylen;
00703
00704 YYDPRINTF ((stderr, "Starting parse\n"));
00705
00706 yystate = 0;
00707 yyerrstatus = 0;
00708 yynerrs = 0;
00709 yychar = YYEMPTY;
00710
00711
00712
00713
00714
00715
00716 yyssp = yyss;
00717 yyvsp = yyvs;
00718 #if YYLSP_NEEDED
00719 yylsp = yyls;
00720 #endif
00721 goto yysetstate;
00722
00723
00724
00725
00726 yynewstate:
00727
00728
00729
00730 yyssp++;
00731
00732 yysetstate:
00733 *yyssp = yystate;
00734
00735 if (yyssp >= yyss + yystacksize - 1)
00736 {
00737
00738 YYSIZE_T yysize = yyssp - yyss + 1;
00739
00740 #ifdef yyoverflow
00741 {
00742
00743
00744
00745 YYSTYPE *yyvs1 = yyvs;
00746 short *yyss1 = yyss;
00747
00748
00749
00750 # if YYLSP_NEEDED
00751 YYLTYPE *yyls1 = yyls;
00752
00753
00754 yyoverflow ("parser stack overflow",
00755 &yyss1, yysize * sizeof (*yyssp),
00756 &yyvs1, yysize * sizeof (*yyvsp),
00757 &yyls1, yysize * sizeof (*yylsp),
00758 &yystacksize);
00759 yyls = yyls1;
00760 # else
00761 yyoverflow ("parser stack overflow",
00762 &yyss1, yysize * sizeof (*yyssp),
00763 &yyvs1, yysize * sizeof (*yyvsp),
00764 &yystacksize);
00765 # endif
00766 yyss = yyss1;
00767 yyvs = yyvs1;
00768 }
00769 #else
00770 # ifndef YYSTACK_RELOCATE
00771 goto yyoverflowlab;
00772 # else
00773
00774 if (yystacksize >= YYMAXDEPTH)
00775 goto yyoverflowlab;
00776 yystacksize *= 2;
00777 if (yystacksize > YYMAXDEPTH)
00778 yystacksize = YYMAXDEPTH;
00779
00780 {
00781 short *yyss1 = yyss;
00782 union yyalloc *yyptr =
00783 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
00784 if (! yyptr)
00785 goto yyoverflowlab;
00786 YYSTACK_RELOCATE (yyss);
00787 YYSTACK_RELOCATE (yyvs);
00788 # if YYLSP_NEEDED
00789 YYSTACK_RELOCATE (yyls);
00790 # endif
00791 # undef YYSTACK_RELOCATE
00792 if (yyss1 != yyssa)
00793 YYSTACK_FREE (yyss1);
00794 }
00795 # endif
00796 #endif
00797
00798 yyssp = yyss + yysize - 1;
00799 yyvsp = yyvs + yysize - 1;
00800 #if YYLSP_NEEDED
00801 yylsp = yyls + yysize - 1;
00802 #endif
00803
00804 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
00805 (unsigned long int) yystacksize));
00806
00807 if (yyssp >= yyss + yystacksize - 1)
00808 YYABORT;
00809 }
00810
00811 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
00812
00813 goto yybackup;
00814
00815
00816
00817
00818
00819 yybackup:
00820
00821
00822
00823
00824
00825
00826
00827 yyn = yypact[yystate];
00828 if (yyn == YYFLAG)
00829 goto yydefault;
00830
00831
00832
00833
00834
00835
00836 if (yychar == YYEMPTY)
00837 {
00838 YYDPRINTF ((stderr, "Reading a token: "));
00839 yychar = YYLEX;
00840 }
00841
00842
00843
00844 if (yychar <= 0)
00845 {
00846 yychar1 = 0;
00847 yychar = YYEOF;
00848
00849 YYDPRINTF ((stderr, "Now at end of input.\n"));
00850 }
00851 else
00852 {
00853 yychar1 = YYTRANSLATE (yychar);
00854
00855 #if YYDEBUG
00856
00857
00858 if (yydebug)
00859 {
00860 YYFPRINTF (stderr, "Next token is %d (%s",
00861 yychar, yytname[yychar1]);
00862
00863
00864 # ifdef YYPRINT
00865 YYPRINT (stderr, yychar, yylval);
00866 # endif
00867 YYFPRINTF (stderr, ")\n");
00868 }
00869 #endif
00870 }
00871
00872 yyn += yychar1;
00873 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
00874 goto yydefault;
00875
00876 yyn = yytable[yyn];
00877
00878
00879
00880
00881
00882
00883
00884
00885 if (yyn < 0)
00886 {
00887 if (yyn == YYFLAG)
00888 goto yyerrlab;
00889 yyn = -yyn;
00890 goto yyreduce;
00891 }
00892 else if (yyn == 0)
00893 goto yyerrlab;
00894
00895 if (yyn == YYFINAL)
00896 YYACCEPT;
00897
00898
00899 YYDPRINTF ((stderr, "Shifting token %d (%s), ",
00900 yychar, yytname[yychar1]));
00901
00902
00903 if (yychar != YYEOF)
00904 yychar = YYEMPTY;
00905
00906 *++yyvsp = yylval;
00907 #if YYLSP_NEEDED
00908 *++yylsp = yylloc;
00909 #endif
00910
00911
00912
00913 if (yyerrstatus)
00914 yyerrstatus--;
00915
00916 yystate = yyn;
00917 goto yynewstate;
00918
00919
00920
00921
00922
00923 yydefault:
00924 yyn = yydefact[yystate];
00925 if (yyn == 0)
00926 goto yyerrlab;
00927 goto yyreduce;
00928
00929
00930
00931
00932
00933 yyreduce:
00934
00935 yylen = yyr2[yyn];
00936
00937
00938
00939
00940
00941
00942
00943
00944
00945 yyval = yyvsp[1-yylen];
00946
00947 #if YYLSP_NEEDED
00948
00949
00950 yyloc = yylsp[1-yylen];
00951 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
00952 #endif
00953
00954 #if YYDEBUG
00955
00956
00957 if (yydebug)
00958 {
00959 int yyi;
00960
00961 YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
00962 yyn, yyrline[yyn]);
00963
00964
00965 for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
00966 YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
00967 YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
00968 }
00969 #endif
00970
00971 switch (yyn) {
00972
00973 case 5:
00974 #line 69 "gengtype-yacc.y"
00975 {
00976 new_structure (yyvsp[-5].t->u.s.tag, UNION_P (yyvsp[-5].t), &lexer_line,
00977 yyvsp[-2].p, yyvsp[-4].o);
00978 do_typedef (yyvsp[0].s, yyvsp[-5].t, &lexer_line);
00979 lexer_toplevel_done = 1;
00980 ;
00981 break;}
00982 case 6:
00983 #line 76 "gengtype-yacc.y"
00984 {;
00985 break;}
00986 case 7:
00987 #line 78 "gengtype-yacc.y"
00988 {
00989 new_structure (yyvsp[-4].t->u.s.tag, UNION_P (yyvsp[-4].t), &lexer_line,
00990 yyvsp[-1].p, yyvsp[-3].o);
00991 lexer_toplevel_done = 1;
00992 ;
00993 break;}
00994 case 8:
00995 #line 84 "gengtype-yacc.y"
00996 {;
00997 break;}
00998 case 9:
00999 #line 88 "gengtype-yacc.y"
01000 {
01001 note_variable (yyvsp[-1].s, adjust_field_type (yyvsp[-2].t, yyvsp[-3].o), yyvsp[-3].o,
01002 &lexer_line);
01003 ;
01004 break;}
01005 case 10:
01006 #line 93 "gengtype-yacc.y"
01007 {
01008 note_variable (yyvsp[-2].s, create_array (yyvsp[-3].t, yyvsp[-1].s),
01009 yyvsp[-4].o, &lexer_line);
01010 ;
01011 break;}
01012 case 11:
01013 #line 98 "gengtype-yacc.y"
01014 {
01015 note_variable (yyvsp[-3].s, create_array (create_array (yyvsp[-4].t, yyvsp[-1].s),
01016 yyvsp[-2].s),
01017 yyvsp[-5].o, &lexer_line);
01018 ;
01019 break;}
01020 case 12:
01021 #line 106 "gengtype-yacc.y"
01022 {
01023 lexer_toplevel_done = 1;
01024 yyval.t = yyvsp[0].t;
01025 ;
01026 break;}
01027 case 15:
01028 #line 118 "gengtype-yacc.y"
01029 {
01030 note_yacc_type (yyvsp[-4].o, yyvsp[-3].p, yyvsp[-1].p, &lexer_line);
01031 ;
01032 break;}
01033 case 16:
01034 #line 124 "gengtype-yacc.y"
01035 { yyval.p = NULL; ;
01036 break;}
01037 case 17:
01038 #line 126 "gengtype-yacc.y"
01039 {
01040 pair_p p;
01041 for (p = yyvsp[0].p; p->next != NULL; p = p->next)
01042 {
01043 p->name = NULL;
01044 p->type = NULL;
01045 }
01046 p->name = NULL;
01047 p->type = NULL;
01048 p->next = yyvsp[-2].p;
01049 yyval.p = yyvsp[0].p;
01050 ;
01051 break;}
01052 case 18:
01053 #line 139 "gengtype-yacc.y"
01054 {
01055 pair_p p;
01056 type_p newtype = NULL;
01057 if (strcmp (yyvsp[-4].s, "type") == 0)
01058 newtype = (type_p) 1;
01059 for (p = yyvsp[0].p; p->next != NULL; p = p->next)
01060 {
01061 p->name = yyvsp[-2].s;
01062 p->type = newtype;
01063 }
01064 p->name = yyvsp[-2].s;
01065 p->next = yyvsp[-5].p;
01066 p->type = newtype;
01067 yyval.p = yyvsp[0].p;
01068 ;
01069 break;}
01070 case 19:
01071 #line 157 "gengtype-yacc.y"
01072 { yyval.p = NULL; ;
01073 break;}
01074 case 20:
01075 #line 159 "gengtype-yacc.y"
01076 {
01077 pair_p p = xcalloc (1, sizeof (*p));
01078 p->next = yyvsp[-1].p;
01079 p->line = lexer_line;
01080 p->opt = xmalloc (sizeof (*(p->opt)));
01081 p->opt->name = "tag";
01082 p->opt->next = NULL;
01083 p->opt->info = (char *)yyvsp[0].s;
01084 yyval.p = p;
01085 ;
01086 break;}
01087 case 21:
01088 #line 170 "gengtype-yacc.y"
01089 {
01090 pair_p p = xcalloc (1, sizeof (*p));
01091 p->next = yyvsp[-1].p;
01092 p->line = lexer_line;
01093 p->opt = xmalloc (sizeof (*(p->opt)));
01094 p->opt->name = "tag";
01095 p->opt->next = NULL;
01096 p->opt->info = xasprintf ("'%s'", yyvsp[0].s);
01097 yyval.p = p;
01098 ;
01099 break;}
01100 case 22:
01101 #line 182 "gengtype-yacc.y"
01102 { yyval.p = NULL; ;
01103 break;}
01104 case 23:
01105 #line 184 "gengtype-yacc.y"
01106 {
01107 pair_p p = xmalloc (sizeof (*p));
01108 p->type = adjust_field_type (yyvsp[-5].t, yyvsp[-4].o);
01109 p->opt = yyvsp[-4].o;
01110 p->name = yyvsp[-3].s;
01111 p->next = yyvsp[0].p;
01112 p->line = lexer_line;
01113 yyval.p = p;
01114 ;
01115 break;}
01116 case 24:
01117 #line 194 "gengtype-yacc.y"
01118 {
01119 pair_p p = xmalloc (sizeof (*p));
01120 p->type = adjust_field_type (create_array (yyvsp[-5].t, yyvsp[-2].s), yyvsp[-4].o);
01121 p->opt = yyvsp[-4].o;
01122 p->name = yyvsp[-3].s;
01123 p->next = yyvsp[0].p;
01124 p->line = lexer_line;
01125 yyval.p = p;
01126 ;
01127 break;}
01128 case 25:
01129 #line 204 "gengtype-yacc.y"
01130 {
01131 pair_p p = xmalloc (sizeof (*p));
01132 p->type = create_array (create_array (yyvsp[-6].t, yyvsp[-2].s), yyvsp[-3].s);
01133 p->opt = yyvsp[-5].o;
01134 p->name = yyvsp[-4].s;
01135 p->next = yyvsp[0].p;
01136 p->line = lexer_line;
01137 yyval.p = p;
01138 ;
01139 break;}
01140 case 29:
01141 #line 221 "gengtype-yacc.y"
01142 { yyval.t = yyvsp[0].t; ;
01143 break;}
01144 case 30:
01145 #line 223 "gengtype-yacc.y"
01146 { yyval.t = resolve_typedef (yyvsp[0].s, &lexer_line); ;
01147 break;}
01148 case 31:
01149 #line 225 "gengtype-yacc.y"
01150 { yyval.t = create_pointer (yyvsp[-1].t); ;
01151 break;}
01152 case 32:
01153 #line 227 "gengtype-yacc.y"
01154 {
01155 new_structure (yyvsp[-3].s, 0, &lexer_line, yyvsp[-1].p, NULL);
01156 yyval.t = find_structure (yyvsp[-3].s, 0);
01157 ;
01158 break;}
01159 case 33:
01160 #line 232 "gengtype-yacc.y"
01161 { yyval.t = find_structure (yyvsp[0].s, 0); ;
01162 break;}
01163 case 34:
01164 #line 234 "gengtype-yacc.y"
01165 {
01166 new_structure (yyvsp[-3].s, 1, &lexer_line, yyvsp[-1].p, NULL);
01167 yyval.t = find_structure (yyvsp[-3].s, 1);
01168 ;
01169 break;}
01170 case 35:
01171 #line 239 "gengtype-yacc.y"
01172 { yyval.t = find_structure (yyvsp[0].s, 1); ;
01173 break;}
01174 case 36:
01175 #line 241 "gengtype-yacc.y"
01176 { yyval.t = create_scalar_type (yyvsp[0].s, strlen (yyvsp[0].s)); ;
01177 break;}
01178 case 37:
01179 #line 243 "gengtype-yacc.y"
01180 { yyval.t = create_scalar_type (yyvsp[-3].s, strlen (yyvsp[-3].s)); ;
01181 break;}
01182 case 39:
01183 #line 248 "gengtype-yacc.y"
01184 { ;
01185 break;}
01186 case 40:
01187 #line 250 "gengtype-yacc.y"
01188 { ;
01189 break;}
01190 case 41:
01191 #line 252 "gengtype-yacc.y"
01192 { ;
01193 break;}
01194 case 42:
01195 #line 255 "gengtype-yacc.y"
01196 { yyval.o = NULL; ;
01197 break;}
01198 case 43:
01199 #line 256 "gengtype-yacc.y"
01200 { yyval.o = yyvsp[0].o; ;
01201 break;}
01202 case 44:
01203 #line 260 "gengtype-yacc.y"
01204 { yyval.o = yyvsp[-2].o; ;
01205 break;}
01206 case 45:
01207 #line 264 "gengtype-yacc.y"
01208 { yyval.s = "ptr_alias"; ;
01209 break;}
01210 case 46:
01211 #line 266 "gengtype-yacc.y"
01212 { yyval.s = yyvsp[0].s; ;
01213 break;}
01214 case 47:
01215 #line 270 "gengtype-yacc.y"
01216 {
01217 options_p o = xmalloc (sizeof (*o));
01218 o->name = yyvsp[-3].s;
01219 o->info = adjust_field_type (yyvsp[-1].t, NULL);
01220 yyval.o = o;
01221 ;
01222 break;}
01223 case 48:
01224 #line 277 "gengtype-yacc.y"
01225 {
01226 options_p o = xmalloc (sizeof (*o));
01227 o->name = yyvsp[-3].s;
01228 o->info = (void *)yyvsp[-1].s;
01229 yyval.o = o;
01230 ;
01231 break;}
01232 case 49:
01233 #line 286 "gengtype-yacc.y"
01234 {
01235 yyvsp[0].o->next = NULL;
01236 yyval.o = yyvsp[0].o;
01237 ;
01238 break;}
01239 case 50:
01240 #line 291 "gengtype-yacc.y"
01241 {
01242 yyvsp[0].o->next = yyvsp[-2].o;
01243 yyval.o = yyvsp[0].o;
01244 ;
01245 break;}
01246 case 51:
01247 #line 297 "gengtype-yacc.y"
01248 { yyval.o = NULL; ;
01249 break;}
01250 case 52:
01251 #line 298 "gengtype-yacc.y"
01252 { yyval.o = yyvsp[0].o; ;
01253 break;}
01254 }
01255
01256 #line 705 "/usr/share/bison/bison.simple"
01257
01258
01259 yyvsp -= yylen;
01260 yyssp -= yylen;
01261 #if YYLSP_NEEDED
01262 yylsp -= yylen;
01263 #endif
01264
01265 #if YYDEBUG
01266 if (yydebug)
01267 {
01268 short *yyssp1 = yyss - 1;
01269 YYFPRINTF (stderr, "state stack now");
01270 while (yyssp1 != yyssp)
01271 YYFPRINTF (stderr, " %d", *++yyssp1);
01272 YYFPRINTF (stderr, "\n");
01273 }
01274 #endif
01275
01276 *++yyvsp = yyval;
01277 #if YYLSP_NEEDED
01278 *++yylsp = yyloc;
01279 #endif
01280
01281
01282
01283
01284
01285 yyn = yyr1[yyn];
01286
01287 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
01288 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
01289 yystate = yytable[yystate];
01290 else
01291 yystate = yydefgoto[yyn - YYNTBASE];
01292
01293 goto yynewstate;
01294
01295
01296
01297
01298
01299 yyerrlab:
01300
01301 if (!yyerrstatus)
01302 {
01303 ++yynerrs;
01304
01305 #ifdef YYERROR_VERBOSE
01306 yyn = yypact[yystate];
01307
01308 if (yyn > YYFLAG && yyn < YYLAST)
01309 {
01310 YYSIZE_T yysize = 0;
01311 char *yymsg;
01312 int yyx, yycount;
01313
01314 yycount = 0;
01315
01316
01317 for (yyx = yyn < 0 ? -yyn : 0;
01318 yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
01319 if (yycheck[yyx + yyn] == yyx)
01320 yysize += yystrlen (yytname[yyx]) + 15, yycount++;
01321 yysize += yystrlen ("parse error, unexpected ") + 1;
01322 yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
01323 yymsg = (char *) YYSTACK_ALLOC (yysize);
01324 if (yymsg != 0)
01325 {
01326 char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
01327 yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
01328
01329 if (yycount < 5)
01330 {
01331 yycount = 0;
01332 for (yyx = yyn < 0 ? -yyn : 0;
01333 yyx < (int) (sizeof (yytname) / sizeof (char *));
01334 yyx++)
01335 if (yycheck[yyx + yyn] == yyx)
01336 {
01337 const char *yyq = ! yycount ? ", expecting " : " or ";
01338 yyp = yystpcpy (yyp, yyq);
01339 yyp = yystpcpy (yyp, yytname[yyx]);
01340 yycount++;
01341 }
01342 }
01343 yyerror (yymsg);
01344 YYSTACK_FREE (yymsg);
01345 }
01346 else
01347 yyerror ("parse error; also virtual memory exhausted");
01348 }
01349 else
01350 #endif
01351 yyerror ("parse error");
01352 }
01353 goto yyerrlab1;
01354
01355
01356
01357
01358
01359 yyerrlab1:
01360 if (yyerrstatus == 3)
01361 {
01362
01363
01364
01365
01366 if (yychar == YYEOF)
01367 YYABORT;
01368 YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
01369 yychar, yytname[yychar1]));
01370 yychar = YYEMPTY;
01371 }
01372
01373
01374
01375
01376 yyerrstatus = 3;
01377
01378 goto yyerrhandle;
01379
01380
01381
01382
01383
01384
01385 yyerrdefault:
01386 #if 0
01387
01388
01389
01390
01391 yyn = yydefact[yystate];
01392 if (yyn)
01393 goto yydefault;
01394 #endif
01395
01396
01397
01398
01399
01400
01401 yyerrpop:
01402 if (yyssp == yyss)
01403 YYABORT;
01404 yyvsp--;
01405 yystate = *--yyssp;
01406 #if YYLSP_NEEDED
01407 yylsp--;
01408 #endif
01409
01410 #if YYDEBUG
01411 if (yydebug)
01412 {
01413 short *yyssp1 = yyss - 1;
01414 YYFPRINTF (stderr, "Error: state stack now");
01415 while (yyssp1 != yyssp)
01416 YYFPRINTF (stderr, " %d", *++yyssp1);
01417 YYFPRINTF (stderr, "\n");
01418 }
01419 #endif
01420
01421
01422
01423
01424 yyerrhandle:
01425 yyn = yypact[yystate];
01426 if (yyn == YYFLAG)
01427 goto yyerrdefault;
01428
01429 yyn += YYTERROR;
01430 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
01431 goto yyerrdefault;
01432
01433 yyn = yytable[yyn];
01434 if (yyn < 0)
01435 {
01436 if (yyn == YYFLAG)
01437 goto yyerrpop;
01438 yyn = -yyn;
01439 goto yyreduce;
01440 }
01441 else if (yyn == 0)
01442 goto yyerrpop;
01443
01444 if (yyn == YYFINAL)
01445 YYACCEPT;
01446
01447 YYDPRINTF ((stderr, "Shifting error token, "));
01448
01449 *++yyvsp = yylval;
01450 #if YYLSP_NEEDED
01451 *++yylsp = yylloc;
01452 #endif
01453
01454 yystate = yyn;
01455 goto yynewstate;
01456
01457
01458
01459
01460
01461 yyacceptlab:
01462 yyresult = 0;
01463 goto yyreturn;
01464
01465
01466
01467
01468 yyabortlab:
01469 yyresult = 1;
01470 goto yyreturn;
01471
01472
01473
01474
01475 yyoverflowlab:
01476 yyerror ("parser stack overflow");
01477 yyresult = 2;
01478
01479
01480 yyreturn:
01481 #ifndef yyoverflow
01482 if (yyss != yyssa)
01483 YYSTACK_FREE (yyss);
01484 #endif
01485 return yyresult;
01486 }
01487 #line 300 "gengtype-yacc.y"
01488