00001 /* A Bison parser, made by GNU Bison 2.3. */ 00002 00003 /* Skeleton implementation for Bison's Yacc-like parsers in C 00004 00005 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 00006 Free Software Foundation, Inc. 00007 00008 This program is free software; you can redistribute it and/or modify 00009 it under the terms of the GNU General Public License as published by 00010 the Free Software Foundation; either version 2, or (at your option) 00011 any later version. 00012 00013 This program is distributed in the hope that it will be useful, 00014 but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 GNU General Public License for more details. 00017 00018 You should have received a copy of the GNU General Public License 00019 along with this program; if not, write to the Free Software 00020 Foundation, Inc., 51 Franklin Street, Fifth Floor, 00021 Boston, MA 02110-1301, USA. */ 00022 00023 /* As a special exception, you may create a larger work that contains 00024 part or all of the Bison parser skeleton and distribute that work 00025 under terms of your choice, so long as that work isn't itself a 00026 parser generator using the skeleton or a modified version thereof 00027 as a parser skeleton. Alternatively, if you modify or redistribute 00028 the parser skeleton itself, you may (at your option) remove this 00029 special exception, which will cause the skeleton and the resulting 00030 Bison output files to be licensed under the GNU General Public 00031 License without this special exception. 00032 00033 This special exception was added by the Free Software Foundation in 00034 version 2.2 of Bison. */ 00035 00036 /* C LALR(1) parser skeleton written by Richard Stallman, by 00037 simplifying the original so-called "semantic" parser. */ 00038 00039 /* All symbols defined below should begin with yy or YY, to avoid 00040 infringing on user name space. This should be done even for local 00041 variables, as they might otherwise be expanded by user macros. 00042 There are some unavoidable exceptions within include files to 00043 define necessary library symbols; they are noted "INFRINGES ON 00044 USER NAME SPACE" below. */ 00045 00046 /* Identify Bison output. */ 00047 #define YYBISON 1 00048 00049 /* Bison version. */ 00050 #define YYBISON_VERSION "2.3" 00051 00052 /* Skeleton name. */ 00053 #define YYSKELETON_NAME "yacc.c" 00054 00055 /* Pure parsers. */ 00056 #define YYPURE 0 00057 00058 /* Using locations. */ 00059 #define YYLSP_NEEDED 0 00060 00061 /* Substitute the variable and function names. */ 00062 #define yyparse cppExpYYparse 00063 #define yylex cppExpYYlex 00064 #define yyerror cppExpYYerror 00065 #define yylval cppExpYYlval 00066 #define yychar cppExpYYchar 00067 #define yydebug cppExpYYdebug 00068 #define yynerrs cppExpYYnerrs 00069 00070 00071 /* Tokens. */ 00072 #ifndef YYTOKENTYPE 00073 # define YYTOKENTYPE 00074 /* Put the tokens into the symbol table, so that GDB and other debuggers 00075 know about them. */ 00076 enum yytokentype { 00077 TOK_QUESTIONMARK = 258, 00078 TOK_COLON = 259, 00079 TOK_OR = 260, 00080 TOK_AND = 261, 00081 TOK_BITWISEOR = 262, 00082 TOK_BITWISEXOR = 263, 00083 TOK_AMPERSAND = 264, 00084 TOK_NOTEQUAL = 265, 00085 TOK_EQUAL = 266, 00086 TOK_LESSTHAN = 267, 00087 TOK_GREATERTHAN = 268, 00088 TOK_LESSTHANOREQUALTO = 269, 00089 TOK_GREATERTHANOREQUALTO = 270, 00090 TOK_SHIFTLEFT = 271, 00091 TOK_SHIFTRIGHT = 272, 00092 TOK_PLUS = 273, 00093 TOK_MINUS = 274, 00094 TOK_STAR = 275, 00095 TOK_DIVIDE = 276, 00096 TOK_MOD = 277, 00097 TOK_TILDE = 278, 00098 TOK_NOT = 279, 00099 TOK_LPAREN = 280, 00100 TOK_RPAREN = 281, 00101 TOK_OCTALINT = 282, 00102 TOK_DECIMALINT = 283, 00103 TOK_HEXADECIMALINT = 284, 00104 TOK_CHARACTER = 285, 00105 TOK_FLOAT = 286 00106 }; 00107 #endif 00108 /* Tokens. */ 00109 #define TOK_QUESTIONMARK 258 00110 #define TOK_COLON 259 00111 #define TOK_OR 260 00112 #define TOK_AND 261 00113 #define TOK_BITWISEOR 262 00114 #define TOK_BITWISEXOR 263 00115 #define TOK_AMPERSAND 264 00116 #define TOK_NOTEQUAL 265 00117 #define TOK_EQUAL 266 00118 #define TOK_LESSTHAN 267 00119 #define TOK_GREATERTHAN 268 00120 #define TOK_LESSTHANOREQUALTO 269 00121 #define TOK_GREATERTHANOREQUALTO 270 00122 #define TOK_SHIFTLEFT 271 00123 #define TOK_SHIFTRIGHT 272 00124 #define TOK_PLUS 273 00125 #define TOK_MINUS 274 00126 #define TOK_STAR 275 00127 #define TOK_DIVIDE 276 00128 #define TOK_MOD 277 00129 #define TOK_TILDE 278 00130 #define TOK_NOT 279 00131 #define TOK_LPAREN 280 00132 #define TOK_RPAREN 281 00133 #define TOK_OCTALINT 282 00134 #define TOK_DECIMALINT 283 00135 #define TOK_HEXADECIMALINT 284 00136 #define TOK_CHARACTER 285 00137 #define TOK_FLOAT 286 00138 00139 00140 00141 00142 /* Copy the first part of user declarations. */ 00143 00144 00145 00146 #include "cppvalue.h" 00147 #include "constexp.h" 00148 #include "message.h" 00149 00150 #if defined(_MSC_VER) 00151 #define MSDOS 00152 #endif 00153 00154 #define YYSTYPE CPPValue 00155 00156 #include <stdio.h> 00157 #include <stdlib.h> 00158 00159 int cppExpYYerror(const char *s) 00160 { 00161 warn(g_constExpFileName,g_constExpLineNr, 00162 "Problem during constant expression evaluation: %s",s); 00163 return 0; 00164 } 00165 00166 int cppExpYYlex(); 00167 00168 00169 00170 /* Enabling traces. */ 00171 #ifndef YYDEBUG 00172 # define YYDEBUG 0 00173 #endif 00174 00175 /* Enabling verbose error messages. */ 00176 #ifdef YYERROR_VERBOSE 00177 # undef YYERROR_VERBOSE 00178 # define YYERROR_VERBOSE 1 00179 #else 00180 # define YYERROR_VERBOSE 0 00181 #endif 00182 00183 /* Enabling the token table. */ 00184 #ifndef YYTOKEN_TABLE 00185 # define YYTOKEN_TABLE 0 00186 #endif 00187 00188 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 00189 typedef int YYSTYPE; 00190 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ 00191 # define YYSTYPE_IS_DECLARED 1 00192 # define YYSTYPE_IS_TRIVIAL 1 00193 #endif 00194 00195 00196 00197 /* Copy the second part of user declarations. */ 00198 00199 00200 /* Line 216 of yacc.c. */ 00201 00202 00203 #ifdef short 00204 # undef short 00205 #endif 00206 00207 #ifdef YYTYPE_UINT8 00208 typedef YYTYPE_UINT8 yytype_uint8; 00209 #else 00210 typedef unsigned char yytype_uint8; 00211 #endif 00212 00213 #ifdef YYTYPE_INT8 00214 typedef YYTYPE_INT8 yytype_int8; 00215 #elif (defined __STDC__ || defined __C99__FUNC__ \ 00216 || defined __cplusplus || defined _MSC_VER) 00217 typedef signed char yytype_int8; 00218 #else 00219 typedef short int yytype_int8; 00220 #endif 00221 00222 #ifdef YYTYPE_UINT16 00223 typedef YYTYPE_UINT16 yytype_uint16; 00224 #else 00225 typedef unsigned short int yytype_uint16; 00226 #endif 00227 00228 #ifdef YYTYPE_INT16 00229 typedef YYTYPE_INT16 yytype_int16; 00230 #else 00231 typedef short int yytype_int16; 00232 #endif 00233 00234 #ifndef YYSIZE_T 00235 # ifdef __SIZE_TYPE__ 00236 # define YYSIZE_T __SIZE_TYPE__ 00237 # elif defined size_t 00238 # define YYSIZE_T size_t 00239 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ 00240 || defined __cplusplus || defined _MSC_VER) 00241 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 00242 # define YYSIZE_T size_t 00243 # else 00244 # define YYSIZE_T unsigned int 00245 # endif 00246 #endif 00247 00248 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 00249 00250 #ifndef YY_ 00251 # if defined YYENABLE_NLS && YYENABLE_NLS 00252 # if ENABLE_NLS 00253 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 00254 # define YY_(msgid) dgettext ("bison-runtime", msgid) 00255 # endif 00256 # endif 00257 # ifndef YY_ 00258 # define YY_(msgid) msgid 00259 # endif 00260 #endif 00261 00262 /* Suppress unused-variable warnings by "using" E. */ 00263 #if ! defined lint || defined __GNUC__ 00264 # define YYUSE(e) ((void) (e)) 00265 #else 00266 # define YYUSE(e) /* empty */ 00267 #endif 00268 00269 /* Identity function, used to suppress warnings about constant conditions. */ 00270 #ifndef lint 00271 # define YYID(n) (n) 00272 #else 00273 #if (defined __STDC__ || defined __C99__FUNC__ \ 00274 || defined __cplusplus || defined _MSC_VER) 00275 static int 00276 YYID (int i) 00277 #else 00278 static int 00279 YYID (i) 00280 int i; 00281 #endif 00282 { 00283 return i; 00284 } 00285 #endif 00286 00287 #if ! defined yyoverflow || YYERROR_VERBOSE 00288 00289 /* The parser invokes alloca or malloc; define the necessary symbols. */ 00290 00291 # ifdef YYSTACK_USE_ALLOCA 00292 # if YYSTACK_USE_ALLOCA 00293 # ifdef __GNUC__ 00294 # define YYSTACK_ALLOC __builtin_alloca 00295 # elif defined __BUILTIN_VA_ARG_INCR 00296 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 00297 # elif defined _AIX 00298 # define YYSTACK_ALLOC __alloca 00299 # elif defined _MSC_VER 00300 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 00301 # define alloca _alloca 00302 # else 00303 # define YYSTACK_ALLOC alloca 00304 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 00305 || defined __cplusplus || defined _MSC_VER) 00306 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 00307 # ifndef _STDLIB_H 00308 # define _STDLIB_H 1 00309 # endif 00310 # endif 00311 # endif 00312 # endif 00313 # endif 00314 00315 # ifdef YYSTACK_ALLOC 00316 /* Pacify GCC's `empty if-body' warning. */ 00317 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) 00318 # ifndef YYSTACK_ALLOC_MAXIMUM 00319 /* The OS might guarantee only one guard page at the bottom of the stack, 00320 and a page size can be as small as 4096 bytes. So we cannot safely 00321 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 00322 to allow for a few compiler-allocated temporary stack slots. */ 00323 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 00324 # endif 00325 # else 00326 # define YYSTACK_ALLOC YYMALLOC 00327 # define YYSTACK_FREE YYFREE 00328 # ifndef YYSTACK_ALLOC_MAXIMUM 00329 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 00330 # endif 00331 # if (defined __cplusplus && ! defined _STDLIB_H \ 00332 && ! ((defined YYMALLOC || defined malloc) \ 00333 && (defined YYFREE || defined free))) 00334 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 00335 # ifndef _STDLIB_H 00336 # define _STDLIB_H 1 00337 # endif 00338 # endif 00339 # ifndef YYMALLOC 00340 # define YYMALLOC malloc 00341 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 00342 || defined __cplusplus || defined _MSC_VER) 00343 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 00344 # endif 00345 # endif 00346 # ifndef YYFREE 00347 # define YYFREE free 00348 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 00349 || defined __cplusplus || defined _MSC_VER) 00350 void free (void *); /* INFRINGES ON USER NAME SPACE */ 00351 # endif 00352 # endif 00353 # endif 00354 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ 00355 00356 00357 #if (! defined yyoverflow \ 00358 && (! defined __cplusplus \ 00359 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 00360 00361 /* A type that is properly aligned for any stack member. */ 00362 union yyalloc 00363 { 00364 yytype_int16 yyss; 00365 YYSTYPE yyvs; 00366 }; 00367 00368 /* The size of the maximum gap between one aligned stack and the next. */ 00369 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 00370 00371 /* The size of an array large to enough to hold all stacks, each with 00372 N elements. */ 00373 # define YYSTACK_BYTES(N) \ 00374 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ 00375 + YYSTACK_GAP_MAXIMUM) 00376 00377 /* Copy COUNT objects from FROM to TO. The source and destination do 00378 not overlap. */ 00379 # ifndef YYCOPY 00380 # if defined __GNUC__ && 1 < __GNUC__ 00381 # define YYCOPY(To, From, Count) \ 00382 __builtin_memcpy (To, From, (Count) * sizeof (*(From))) 00383 # else 00384 # define YYCOPY(To, From, Count) \ 00385 do \ 00386 { \ 00387 YYSIZE_T yyi; \ 00388 for (yyi = 0; yyi < (Count); yyi++) \ 00389 (To)[yyi] = (From)[yyi]; \ 00390 } \ 00391 while (YYID (0)) 00392 # endif 00393 # endif 00394 00395 /* Relocate STACK from its old location to the new one. The 00396 local variables YYSIZE and YYSTACKSIZE give the old and new number of 00397 elements in the stack, and YYPTR gives the new location of the 00398 stack. Advance YYPTR to a properly aligned location for the next 00399 stack. */ 00400 # define YYSTACK_RELOCATE(Stack) \ 00401 do \ 00402 { \ 00403 YYSIZE_T yynewbytes; \ 00404 YYCOPY (&yyptr->Stack, Stack, yysize); \ 00405 Stack = &yyptr->Stack; \ 00406 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 00407 yyptr += yynewbytes / sizeof (*yyptr); \ 00408 } \ 00409 while (YYID (0)) 00410 00411 #endif 00412 00413 /* YYFINAL -- State number of the termination state. */ 00414 #define YYFINAL 31 00415 /* YYLAST -- Last index in YYTABLE. */ 00416 #define YYLAST 63 00417 00418 /* YYNTOKENS -- Number of terminals. */ 00419 #define YYNTOKENS 32 00420 /* YYNNTS -- Number of nonterminals. */ 00421 #define YYNNTS 16 00422 /* YYNRULES -- Number of rules. */ 00423 #define YYNRULES 44 00424 /* YYNRULES -- Number of states. */ 00425 #define YYNSTATES 73 00426 00427 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 00428 #define YYUNDEFTOK 2 00429 #define YYMAXUTOK 286 00430 00431 #define YYTRANSLATE(YYX) \ 00432 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 00433 00434 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 00435 static const yytype_uint8 yytranslate[] = 00436 { 00437 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00438 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00439 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00440 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00441 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00442 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00443 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00444 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00445 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00446 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00447 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00448 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00449 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00450 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00451 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00452 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00453 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00454 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00455 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00456 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00457 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00458 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00459 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00460 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00461 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00462 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 00463 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 00464 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 00465 25, 26, 27, 28, 29, 30, 31 00466 }; 00467 00468 #if YYDEBUG 00469 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 00470 YYRHS. */ 00471 static const yytype_uint8 yyprhs[] = 00472 { 00473 0, 0, 3, 5, 7, 13, 15, 19, 21, 25, 00474 27, 31, 33, 37, 39, 43, 45, 49, 53, 55, 00475 59, 63, 67, 71, 73, 77, 81, 83, 87, 91, 00476 93, 97, 101, 105, 107, 110, 113, 116, 119, 121, 00477 125, 127, 129, 131, 133 00478 }; 00479 00480 /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 00481 static const yytype_int8 yyrhs[] = 00482 { 00483 33, 0, -1, 34, -1, 35, -1, 35, 3, 35, 00484 4, 35, -1, 36, -1, 35, 5, 36, -1, 37, 00485 -1, 36, 6, 37, -1, 38, -1, 37, 7, 38, 00486 -1, 39, -1, 38, 8, 39, -1, 40, -1, 39, 00487 9, 40, -1, 41, -1, 40, 11, 41, -1, 40, 00488 10, 41, -1, 42, -1, 41, 12, 42, -1, 41, 00489 13, 42, -1, 41, 14, 42, -1, 41, 15, 42, 00490 -1, 43, -1, 42, 16, 43, -1, 42, 17, 43, 00491 -1, 44, -1, 43, 18, 44, -1, 43, 19, 44, 00492 -1, 45, -1, 44, 20, 45, -1, 44, 21, 45, 00493 -1, 44, 22, 45, -1, 46, -1, 18, 45, -1, 00494 19, 45, -1, 23, 45, -1, 24, 45, -1, 47, 00495 -1, 25, 34, 26, -1, 27, -1, 28, -1, 29, 00496 -1, 30, -1, 31, -1 00497 }; 00498 00499 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 00500 static const yytype_uint16 yyrline[] = 00501 { 00502 0, 77, 77, 81, 83, 92, 94, 100, 102, 108, 00503 110, 117, 119, 125, 127, 133, 135, 139, 145, 147, 00504 151, 155, 160, 167, 169, 173, 179, 181, 192, 205, 00505 207, 218, 231, 239, 241, 243, 250, 254, 260, 262, 00506 266, 268, 270, 272, 274 00507 }; 00508 #endif 00509 00510 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE 00511 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 00512 First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 00513 static const char *const yytname[] = 00514 { 00515 "$end", "error", "$undefined", "TOK_QUESTIONMARK", "TOK_COLON", 00516 "TOK_OR", "TOK_AND", "TOK_BITWISEOR", "TOK_BITWISEXOR", "TOK_AMPERSAND", 00517 "TOK_NOTEQUAL", "TOK_EQUAL", "TOK_LESSTHAN", "TOK_GREATERTHAN", 00518 "TOK_LESSTHANOREQUALTO", "TOK_GREATERTHANOREQUALTO", "TOK_SHIFTLEFT", 00519 "TOK_SHIFTRIGHT", "TOK_PLUS", "TOK_MINUS", "TOK_STAR", "TOK_DIVIDE", 00520 "TOK_MOD", "TOK_TILDE", "TOK_NOT", "TOK_LPAREN", "TOK_RPAREN", 00521 "TOK_OCTALINT", "TOK_DECIMALINT", "TOK_HEXADECIMALINT", "TOK_CHARACTER", 00522 "TOK_FLOAT", "$accept", "start", "constant_expression", 00523 "logical_or_expression", "logical_and_expression", 00524 "inclusive_or_expression", "exclusive_or_expression", "and_expression", 00525 "equality_expression", "relational_expression", "shift_expression", 00526 "additive_expression", "multiplicative_expression", "unary_expression", 00527 "primary_expression", "constant", 0 00528 }; 00529 #endif 00530 00531 # ifdef YYPRINT 00532 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to 00533 token YYLEX-NUM. */ 00534 static const yytype_uint16 yytoknum[] = 00535 { 00536 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 00537 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 00538 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 00539 285, 286 00540 }; 00541 # endif 00542 00543 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 00544 static const yytype_uint8 yyr1[] = 00545 { 00546 0, 32, 33, 34, 34, 35, 35, 36, 36, 37, 00547 37, 38, 38, 39, 39, 40, 40, 40, 41, 41, 00548 41, 41, 41, 42, 42, 42, 43, 43, 43, 44, 00549 44, 44, 44, 45, 45, 45, 45, 45, 46, 46, 00550 47, 47, 47, 47, 47 00551 }; 00552 00553 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 00554 static const yytype_uint8 yyr2[] = 00555 { 00556 0, 2, 1, 1, 5, 1, 3, 1, 3, 1, 00557 3, 1, 3, 1, 3, 1, 3, 3, 1, 3, 00558 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 00559 3, 3, 3, 1, 2, 2, 2, 2, 1, 3, 00560 1, 1, 1, 1, 1 00561 }; 00562 00563 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state 00564 STATE-NUM when YYTABLE doesn't specify something else to do. Zero 00565 means the default is an error. */ 00566 static const yytype_uint8 yydefact[] = 00567 { 00568 0, 0, 0, 0, 0, 0, 40, 41, 42, 43, 00569 44, 0, 2, 3, 5, 7, 9, 11, 13, 15, 00570 18, 23, 26, 29, 33, 38, 34, 35, 36, 37, 00571 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 00572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00573 0, 39, 0, 6, 8, 10, 12, 14, 17, 16, 00574 19, 20, 21, 22, 24, 25, 27, 28, 30, 31, 00575 32, 0, 4 00576 }; 00577 00578 /* YYDEFGOTO[NTERM-NUM]. */ 00579 static const yytype_int8 yydefgoto[] = 00580 { 00581 -1, 11, 12, 13, 14, 15, 16, 17, 18, 19, 00582 20, 21, 22, 23, 24, 25 00583 }; 00584 00585 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 00586 STATE-NUM. */ 00587 #define YYPACT_NINF -29 00588 static const yytype_int8 yypact[] = 00589 { 00590 -13, -13, -13, -13, -13, -13, -29, -29, -29, -29, 00591 -29, 13, -29, 4, 29, 1, 19, 33, 21, 7, 00592 17, 18, 8, -29, -29, -29, -29, -29, -29, -29, 00593 20, -29, -13, -13, -13, -13, -13, -13, -13, -13, 00594 -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, 00595 -13, -29, 34, 29, 1, 19, 33, 21, 7, 7, 00596 17, 17, 17, 17, 18, 18, 8, 8, -29, -29, 00597 -29, -13, 45 00598 }; 00599 00600 /* YYPGOTO[NTERM-NUM]. */ 00601 static const yytype_int8 yypgoto[] = 00602 { 00603 -29, -29, 48, -28, 22, 23, 24, 25, 26, 2, 00604 -17, 0, 5, -1, -29, -29 00605 }; 00606 00607 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 00608 positive, shift that token. If negative, reduce the rule which 00609 number is the opposite. If zero, do what YYDEFACT says. 00610 If YYTABLE_NINF, syntax error. */ 00611 #define YYTABLE_NINF -1 00612 static const yytype_uint8 yytable[] = 00613 { 00614 26, 27, 28, 29, 52, 1, 2, 32, 35, 33, 00615 3, 4, 5, 31, 6, 7, 8, 9, 10, 40, 00616 41, 42, 43, 60, 61, 62, 63, 36, 48, 49, 00617 50, 38, 39, 44, 45, 34, 46, 47, 71, 33, 00618 58, 59, 37, 72, 64, 65, 51, 68, 69, 70, 00619 33, 66, 67, 30, 0, 53, 0, 54, 0, 55, 00620 0, 56, 0, 57 00621 }; 00622 00623 static const yytype_int8 yycheck[] = 00624 { 00625 1, 2, 3, 4, 32, 18, 19, 3, 7, 5, 00626 23, 24, 25, 0, 27, 28, 29, 30, 31, 12, 00627 13, 14, 15, 40, 41, 42, 43, 8, 20, 21, 00628 22, 10, 11, 16, 17, 6, 18, 19, 4, 5, 00629 38, 39, 9, 71, 44, 45, 26, 48, 49, 50, 00630 5, 46, 47, 5, -1, 33, -1, 34, -1, 35, 00631 -1, 36, -1, 37 00632 }; 00633 00634 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 00635 symbol of state STATE-NUM. */ 00636 static const yytype_uint8 yystos[] = 00637 { 00638 0, 18, 19, 23, 24, 25, 27, 28, 29, 30, 00639 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 00640 42, 43, 44, 45, 46, 47, 45, 45, 45, 45, 00641 34, 0, 3, 5, 6, 7, 8, 9, 10, 11, 00642 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 00643 22, 26, 35, 36, 37, 38, 39, 40, 41, 41, 00644 42, 42, 42, 42, 43, 43, 44, 44, 45, 45, 00645 45, 4, 35 00646 }; 00647 00648 #define yyerrok (yyerrstatus = 0) 00649 #define yyclearin (yychar = YYEMPTY) 00650 #define YYEMPTY (-2) 00651 #define YYEOF 0 00652 00653 #define YYACCEPT goto yyacceptlab 00654 #define YYABORT goto yyabortlab 00655 #define YYERROR goto yyerrorlab 00656 00657 00658 /* Like YYERROR except do call yyerror. This remains here temporarily 00659 to ease the transition to the new meaning of YYERROR, for GCC. 00660 Once GCC version 2 has supplanted version 1, this can go. */ 00661 00662 #define YYFAIL goto yyerrlab 00663 00664 #define YYRECOVERING() (!!yyerrstatus) 00665 00666 #define YYBACKUP(Token, Value) \ 00667 do \ 00668 if (yychar == YYEMPTY && yylen == 1) \ 00669 { \ 00670 yychar = (Token); \ 00671 yylval = (Value); \ 00672 yytoken = YYTRANSLATE (yychar); \ 00673 YYPOPSTACK (1); \ 00674 goto yybackup; \ 00675 } \ 00676 else \ 00677 { \ 00678 yyerror (YY_("syntax error: cannot back up")); \ 00679 YYERROR; \ 00680 } \ 00681 while (YYID (0)) 00682 00683 00684 #define YYTERROR 1 00685 #define YYERRCODE 256 00686 00687 00688 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 00689 If N is 0, then set CURRENT to the empty location which ends 00690 the previous symbol: RHS[0] (always defined). */ 00691 00692 #define YYRHSLOC(Rhs, K) ((Rhs)[K]) 00693 #ifndef YYLLOC_DEFAULT 00694 # define YYLLOC_DEFAULT(Current, Rhs, N) \ 00695 do \ 00696 if (YYID (N)) \ 00697 { \ 00698 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 00699 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 00700 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 00701 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 00702 } \ 00703 else \ 00704 { \ 00705 (Current).first_line = (Current).last_line = \ 00706 YYRHSLOC (Rhs, 0).last_line; \ 00707 (Current).first_column = (Current).last_column = \ 00708 YYRHSLOC (Rhs, 0).last_column; \ 00709 } \ 00710 while (YYID (0)) 00711 #endif 00712 00713 00714 /* YY_LOCATION_PRINT -- Print the location on the stream. 00715 This macro was not mandated originally: define only if we know 00716 we won't break user code: when these are the locations we know. */ 00717 00718 #ifndef YY_LOCATION_PRINT 00719 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL 00720 # define YY_LOCATION_PRINT(File, Loc) \ 00721 fprintf (File, "%d.%d-%d.%d", \ 00722 (Loc).first_line, (Loc).first_column, \ 00723 (Loc).last_line, (Loc).last_column) 00724 # else 00725 # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 00726 # endif 00727 #endif 00728 00729 00730 /* YYLEX -- calling `yylex' with the right arguments. */ 00731 00732 #ifdef YYLEX_PARAM 00733 # define YYLEX yylex (YYLEX_PARAM) 00734 #else 00735 # define YYLEX yylex () 00736 #endif 00737 00738 /* Enable debugging if requested. */ 00739 #if YYDEBUG 00740 00741 # ifndef YYFPRINTF 00742 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 00743 # define YYFPRINTF fprintf 00744 # endif 00745 00746 # define YYDPRINTF(Args) \ 00747 do { \ 00748 if (yydebug) \ 00749 YYFPRINTF Args; \ 00750 } while (YYID (0)) 00751 00752 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 00753 do { \ 00754 if (yydebug) \ 00755 { \ 00756 YYFPRINTF (stderr, "%s ", Title); \ 00757 yy_symbol_print (stderr, \ 00758 Type, Value); \ 00759 YYFPRINTF (stderr, "\n"); \ 00760 } \ 00761 } while (YYID (0)) 00762 00763 00764 /*--------------------------------. 00765 | Print this symbol on YYOUTPUT. | 00766 `--------------------------------*/ 00767 00768 /*ARGSUSED*/ 00769 #if (defined __STDC__ || defined __C99__FUNC__ \ 00770 || defined __cplusplus || defined _MSC_VER) 00771 static void 00772 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 00773 #else 00774 static void 00775 yy_symbol_value_print (yyoutput, yytype, yyvaluep) 00776 FILE *yyoutput; 00777 int yytype; 00778 YYSTYPE const * const yyvaluep; 00779 #endif 00780 { 00781 if (!yyvaluep) 00782 return; 00783 # ifdef YYPRINT 00784 if (yytype < YYNTOKENS) 00785 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 00786 # else 00787 YYUSE (yyoutput); 00788 # endif 00789 switch (yytype) 00790 { 00791 default: 00792 break; 00793 } 00794 } 00795 00796 00797 /*--------------------------------. 00798 | Print this symbol on YYOUTPUT. | 00799 `--------------------------------*/ 00800 00801 #if (defined __STDC__ || defined __C99__FUNC__ \ 00802 || defined __cplusplus || defined _MSC_VER) 00803 static void 00804 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 00805 #else 00806 static void 00807 yy_symbol_print (yyoutput, yytype, yyvaluep) 00808 FILE *yyoutput; 00809 int yytype; 00810 YYSTYPE const * const yyvaluep; 00811 #endif 00812 { 00813 if (yytype < YYNTOKENS) 00814 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); 00815 else 00816 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); 00817 00818 yy_symbol_value_print (yyoutput, yytype, yyvaluep); 00819 YYFPRINTF (yyoutput, ")"); 00820 } 00821 00822 /*------------------------------------------------------------------. 00823 | yy_stack_print -- Print the state stack from its BOTTOM up to its | 00824 | TOP (included). | 00825 `------------------------------------------------------------------*/ 00826 00827 #if (defined __STDC__ || defined __C99__FUNC__ \ 00828 || defined __cplusplus || defined _MSC_VER) 00829 static void 00830 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) 00831 #else 00832 static void 00833 yy_stack_print (bottom, top) 00834 yytype_int16 *bottom; 00835 yytype_int16 *top; 00836 #endif 00837 { 00838 YYFPRINTF (stderr, "Stack now"); 00839 for (; bottom <= top; ++bottom) 00840 YYFPRINTF (stderr, " %d", *bottom); 00841 YYFPRINTF (stderr, "\n"); 00842 } 00843 00844 # define YY_STACK_PRINT(Bottom, Top) \ 00845 do { \ 00846 if (yydebug) \ 00847 yy_stack_print ((Bottom), (Top)); \ 00848 } while (YYID (0)) 00849 00850 00851 /*------------------------------------------------. 00852 | Report that the YYRULE is going to be reduced. | 00853 `------------------------------------------------*/ 00854 00855 #if (defined __STDC__ || defined __C99__FUNC__ \ 00856 || defined __cplusplus || defined _MSC_VER) 00857 static void 00858 yy_reduce_print (YYSTYPE *yyvsp, int yyrule) 00859 #else 00860 static void 00861 yy_reduce_print (yyvsp, yyrule) 00862 YYSTYPE *yyvsp; 00863 int yyrule; 00864 #endif 00865 { 00866 int yynrhs = yyr2[yyrule]; 00867 int yyi; 00868 unsigned long int yylno = yyrline[yyrule]; 00869 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 00870 yyrule - 1, yylno); 00871 /* The symbols being reduced. */ 00872 for (yyi = 0; yyi < yynrhs; yyi++) 00873 { 00874 fprintf (stderr, " $%d = ", yyi + 1); 00875 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 00876 &(yyvsp[(yyi + 1) - (yynrhs)]) 00877 ); 00878 fprintf (stderr, "\n"); 00879 } 00880 } 00881 00882 # define YY_REDUCE_PRINT(Rule) \ 00883 do { \ 00884 if (yydebug) \ 00885 yy_reduce_print (yyvsp, Rule); \ 00886 } while (YYID (0)) 00887 00888 /* Nonzero means print parse trace. It is left uninitialized so that 00889 multiple parsers can coexist. */ 00890 int yydebug; 00891 #else /* !YYDEBUG */ 00892 # define YYDPRINTF(Args) 00893 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) 00894 # define YY_STACK_PRINT(Bottom, Top) 00895 # define YY_REDUCE_PRINT(Rule) 00896 #endif /* !YYDEBUG */ 00897 00898 00899 /* YYINITDEPTH -- initial size of the parser's stacks. */ 00900 #ifndef YYINITDEPTH 00901 # define YYINITDEPTH 200 00902 #endif 00903 00904 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 00905 if the built-in stack extension method is used). 00906 00907 Do not make this value too large; the results are undefined if 00908 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 00909 evaluated with infinite-precision integer arithmetic. */ 00910 00911 #ifndef YYMAXDEPTH 00912 # define YYMAXDEPTH 10000 00913 #endif 00914 00915 00916 00917 #if YYERROR_VERBOSE 00918 00919 # ifndef yystrlen 00920 # if defined __GLIBC__ && defined _STRING_H 00921 # define yystrlen strlen 00922 # else 00923 /* Return the length of YYSTR. */ 00924 #if (defined __STDC__ || defined __C99__FUNC__ \ 00925 || defined __cplusplus || defined _MSC_VER) 00926 static YYSIZE_T 00927 yystrlen (const char *yystr) 00928 #else 00929 static YYSIZE_T 00930 yystrlen (yystr) 00931 const char *yystr; 00932 #endif 00933 { 00934 YYSIZE_T yylen; 00935 for (yylen = 0; yystr[yylen]; yylen++) 00936 continue; 00937 return yylen; 00938 } 00939 # endif 00940 # endif 00941 00942 # ifndef yystpcpy 00943 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 00944 # define yystpcpy stpcpy 00945 # else 00946 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 00947 YYDEST. */ 00948 #if (defined __STDC__ || defined __C99__FUNC__ \ 00949 || defined __cplusplus || defined _MSC_VER) 00950 static char * 00951 yystpcpy (char *yydest, const char *yysrc) 00952 #else 00953 static char * 00954 yystpcpy (yydest, yysrc) 00955 char *yydest; 00956 const char *yysrc; 00957 #endif 00958 { 00959 char *yyd = yydest; 00960 const char *yys = yysrc; 00961 00962 while ((*yyd++ = *yys++) != '\0') 00963 continue; 00964 00965 return yyd - 1; 00966 } 00967 # endif 00968 # endif 00969 00970 # ifndef yytnamerr 00971 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary 00972 quotes and backslashes, so that it's suitable for yyerror. The 00973 heuristic is that double-quoting is unnecessary unless the string 00974 contains an apostrophe, a comma, or backslash (other than 00975 backslash-backslash). YYSTR is taken from yytname. If YYRES is 00976 null, do not copy; instead, return the length of what the result 00977 would have been. */ 00978 static YYSIZE_T 00979 yytnamerr (char *yyres, const char *yystr) 00980 { 00981 if (*yystr == '"') 00982 { 00983 YYSIZE_T yyn = 0; 00984 char const *yyp = yystr; 00985 00986 for (;;) 00987 switch (*++yyp) 00988 { 00989 case '\'': 00990 case ',': 00991 goto do_not_strip_quotes; 00992 00993 case '\\': 00994 if (*++yyp != '\\') 00995 goto do_not_strip_quotes; 00996 /* Fall through. */ 00997 default: 00998 if (yyres) 00999 yyres[yyn] = *yyp; 01000 yyn++; 01001 break; 01002 01003 case '"': 01004 if (yyres) 01005 yyres[yyn] = '\0'; 01006 return yyn; 01007 } 01008 do_not_strip_quotes: ; 01009 } 01010 01011 if (! yyres) 01012 return yystrlen (yystr); 01013 01014 return yystpcpy (yyres, yystr) - yyres; 01015 } 01016 # endif 01017 01018 /* Copy into YYRESULT an error message about the unexpected token 01019 YYCHAR while in state YYSTATE. Return the number of bytes copied, 01020 including the terminating null byte. If YYRESULT is null, do not 01021 copy anything; just return the number of bytes that would be 01022 copied. As a special case, return 0 if an ordinary "syntax error" 01023 message will do. Return YYSIZE_MAXIMUM if overflow occurs during 01024 size calculation. */ 01025 static YYSIZE_T 01026 yysyntax_error (char *yyresult, int yystate, int yychar) 01027 { 01028 int yyn = yypact[yystate]; 01029 01030 if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) 01031 return 0; 01032 else 01033 { 01034 int yytype = YYTRANSLATE (yychar); 01035 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); 01036 YYSIZE_T yysize = yysize0; 01037 YYSIZE_T yysize1; 01038 int yysize_overflow = 0; 01039 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 01040 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 01041 int yyx; 01042 01043 # if 0 01044 /* This is so xgettext sees the translatable formats that are 01045 constructed on the fly. */ 01046 YY_("syntax error, unexpected %s"); 01047 YY_("syntax error, unexpected %s, expecting %s"); 01048 YY_("syntax error, unexpected %s, expecting %s or %s"); 01049 YY_("syntax error, unexpected %s, expecting %s or %s or %s"); 01050 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); 01051 # endif 01052 char *yyfmt; 01053 char const *yyf; 01054 static char const yyunexpected[] = "syntax error, unexpected %s"; 01055 static char const yyexpecting[] = ", expecting %s"; 01056 static char const yyor[] = " or %s"; 01057 char yyformat[sizeof yyunexpected 01058 + sizeof yyexpecting - 1 01059 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) 01060 * (sizeof yyor - 1))]; 01061 char const *yyprefix = yyexpecting; 01062 01063 /* Start YYX at -YYN if negative to avoid negative indexes in 01064 YYCHECK. */ 01065 int yyxbegin = yyn < 0 ? -yyn : 0; 01066 01067 /* Stay within bounds of both yycheck and yytname. */ 01068 int yychecklim = YYLAST - yyn + 1; 01069 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 01070 int yycount = 1; 01071 01072 yyarg[0] = yytname[yytype]; 01073 yyfmt = yystpcpy (yyformat, yyunexpected); 01074 01075 for (yyx = yyxbegin; yyx < yyxend; ++yyx) 01076 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) 01077 { 01078 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 01079 { 01080 yycount = 1; 01081 yysize = yysize0; 01082 yyformat[sizeof yyunexpected - 1] = '\0'; 01083 break; 01084 } 01085 yyarg[yycount++] = yytname[yyx]; 01086 yysize1 = yysize + yytnamerr (0, yytname[yyx]); 01087 yysize_overflow |= (yysize1 < yysize); 01088 yysize = yysize1; 01089 yyfmt = yystpcpy (yyfmt, yyprefix); 01090 yyprefix = yyor; 01091 } 01092 01093 yyf = YY_(yyformat); 01094 yysize1 = yysize + yystrlen (yyf); 01095 yysize_overflow |= (yysize1 < yysize); 01096 yysize = yysize1; 01097 01098 if (yysize_overflow) 01099 return YYSIZE_MAXIMUM; 01100 01101 if (yyresult) 01102 { 01103 /* Avoid sprintf, as that infringes on the user's name space. 01104 Don't have undefined behavior even if the translation 01105 produced a string with the wrong number of "%s"s. */ 01106 char *yyp = yyresult; 01107 int yyi = 0; 01108 while ((*yyp = *yyf) != '\0') 01109 { 01110 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) 01111 { 01112 yyp += yytnamerr (yyp, yyarg[yyi++]); 01113 yyf += 2; 01114 } 01115 else 01116 { 01117 yyp++; 01118 yyf++; 01119 } 01120 } 01121 } 01122 return yysize; 01123 } 01124 } 01125 #endif /* YYERROR_VERBOSE */ 01126 01127 01128 /*-----------------------------------------------. 01129 | Release the memory associated to this symbol. | 01130 `-----------------------------------------------*/ 01131 01132 /*ARGSUSED*/ 01133 #if (defined __STDC__ || defined __C99__FUNC__ \ 01134 || defined __cplusplus || defined _MSC_VER) 01135 static void 01136 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) 01137 #else 01138 static void 01139 yydestruct (yymsg, yytype, yyvaluep) 01140 const char *yymsg; 01141 int yytype; 01142 YYSTYPE *yyvaluep; 01143 #endif 01144 { 01145 YYUSE (yyvaluep); 01146 01147 if (!yymsg) 01148 yymsg = "Deleting"; 01149 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 01150 01151 switch (yytype) 01152 { 01153 01154 default: 01155 break; 01156 } 01157 } 01158 01159 01160 /* Prevent warnings from -Wmissing-prototypes. */ 01161 01162 #ifdef YYPARSE_PARAM 01163 #if defined __STDC__ || defined __cplusplus 01164 int yyparse (void *YYPARSE_PARAM); 01165 #else 01166 int yyparse (); 01167 #endif 01168 #else /* ! YYPARSE_PARAM */ 01169 #if defined __STDC__ || defined __cplusplus 01170 int yyparse (void); 01171 #else 01172 int yyparse (); 01173 #endif 01174 #endif /* ! YYPARSE_PARAM */ 01175 01176 01177 01178 /* The look-ahead symbol. */ 01179 int yychar; 01180 01181 /* The semantic value of the look-ahead symbol. */ 01182 YYSTYPE yylval; 01183 01184 /* Number of syntax errors so far. */ 01185 int yynerrs; 01186 01187 01188 01189 /*----------. 01190 | yyparse. | 01191 `----------*/ 01192 01193 #ifdef YYPARSE_PARAM 01194 #if (defined __STDC__ || defined __C99__FUNC__ \ 01195 || defined __cplusplus || defined _MSC_VER) 01196 int 01197 yyparse (void *YYPARSE_PARAM) 01198 #else 01199 int 01200 yyparse (YYPARSE_PARAM) 01201 void *YYPARSE_PARAM; 01202 #endif 01203 #else /* ! YYPARSE_PARAM */ 01204 #if (defined __STDC__ || defined __C99__FUNC__ \ 01205 || defined __cplusplus || defined _MSC_VER) 01206 int 01207 yyparse (void) 01208 #else 01209 int 01210 yyparse () 01211 01212 #endif 01213 #endif 01214 { 01215 01216 int yystate; 01217 int yyn; 01218 int yyresult; 01219 /* Number of tokens to shift before error messages enabled. */ 01220 int yyerrstatus; 01221 /* Look-ahead token as an internal (translated) token number. */ 01222 int yytoken = 0; 01223 #if YYERROR_VERBOSE 01224 /* Buffer for error messages, and its allocated size. */ 01225 char yymsgbuf[128]; 01226 char *yymsg = yymsgbuf; 01227 YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 01228 #endif 01229 01230 /* Three stacks and their tools: 01231 `yyss': related to states, 01232 `yyvs': related to semantic values, 01233 `yyls': related to locations. 01234 01235 Refer to the stacks thru separate pointers, to allow yyoverflow 01236 to reallocate them elsewhere. */ 01237 01238 /* The state stack. */ 01239 yytype_int16 yyssa[YYINITDEPTH]; 01240 yytype_int16 *yyss = yyssa; 01241 yytype_int16 *yyssp; 01242 01243 /* The semantic value stack. */ 01244 YYSTYPE yyvsa[YYINITDEPTH]; 01245 YYSTYPE *yyvs = yyvsa; 01246 YYSTYPE *yyvsp; 01247 01248 01249 01250 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) 01251 01252 YYSIZE_T yystacksize = YYINITDEPTH; 01253 01254 /* The variables used to return semantic value and location from the 01255 action routines. */ 01256 YYSTYPE yyval; 01257 01258 01259 /* The number of symbols on the RHS of the reduced rule. 01260 Keep to zero when no symbol should be popped. */ 01261 int yylen = 0; 01262 01263 YYDPRINTF ((stderr, "Starting parse\n")); 01264 01265 yystate = 0; 01266 yyerrstatus = 0; 01267 yynerrs = 0; 01268 yychar = YYEMPTY; /* Cause a token to be read. */ 01269 01270 /* Initialize stack pointers. 01271 Waste one element of value and location stack 01272 so that they stay on the same level as the state stack. 01273 The wasted elements are never initialized. */ 01274 01275 yyssp = yyss; 01276 yyvsp = yyvs; 01277 01278 goto yysetstate; 01279 01280 /*------------------------------------------------------------. 01281 | yynewstate -- Push a new state, which is found in yystate. | 01282 `------------------------------------------------------------*/ 01283 yynewstate: 01284 /* In all cases, when you get here, the value and location stacks 01285 have just been pushed. So pushing a state here evens the stacks. */ 01286 yyssp++; 01287 01288 yysetstate: 01289 *yyssp = yystate; 01290 01291 if (yyss + yystacksize - 1 <= yyssp) 01292 { 01293 /* Get the current used size of the three stacks, in elements. */ 01294 YYSIZE_T yysize = yyssp - yyss + 1; 01295 01296 #ifdef yyoverflow 01297 { 01298 /* Give user a chance to reallocate the stack. Use copies of 01299 these so that the &'s don't force the real ones into 01300 memory. */ 01301 YYSTYPE *yyvs1 = yyvs; 01302 yytype_int16 *yyss1 = yyss; 01303 01304 01305 /* Each stack pointer address is followed by the size of the 01306 data in use in that stack, in bytes. This used to be a 01307 conditional around just the two extra args, but that might 01308 be undefined if yyoverflow is a macro. */ 01309 yyoverflow (YY_("memory exhausted"), 01310 &yyss1, yysize * sizeof (*yyssp), 01311 &yyvs1, yysize * sizeof (*yyvsp), 01312 01313 &yystacksize); 01314 01315 yyss = yyss1; 01316 yyvs = yyvs1; 01317 } 01318 #else /* no yyoverflow */ 01319 # ifndef YYSTACK_RELOCATE 01320 goto yyexhaustedlab; 01321 # else 01322 /* Extend the stack our own way. */ 01323 if (YYMAXDEPTH <= yystacksize) 01324 goto yyexhaustedlab; 01325 yystacksize *= 2; 01326 if (YYMAXDEPTH < yystacksize) 01327 yystacksize = YYMAXDEPTH; 01328 01329 { 01330 yytype_int16 *yyss1 = yyss; 01331 union yyalloc *yyptr = 01332 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 01333 if (! yyptr) 01334 goto yyexhaustedlab; 01335 YYSTACK_RELOCATE (yyss); 01336 YYSTACK_RELOCATE (yyvs); 01337 01338 # undef YYSTACK_RELOCATE 01339 if (yyss1 != yyssa) 01340 YYSTACK_FREE (yyss1); 01341 } 01342 # endif 01343 #endif /* no yyoverflow */ 01344 01345 yyssp = yyss + yysize - 1; 01346 yyvsp = yyvs + yysize - 1; 01347 01348 01349 YYDPRINTF ((stderr, "Stack size increased to %lu\n", 01350 (unsigned long int) yystacksize)); 01351 01352 if (yyss + yystacksize - 1 <= yyssp) 01353 YYABORT; 01354 } 01355 01356 YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 01357 01358 goto yybackup; 01359 01360 /*-----------. 01361 | yybackup. | 01362 `-----------*/ 01363 yybackup: 01364 01365 /* Do appropriate processing given the current state. Read a 01366 look-ahead token if we need one and don't already have one. */ 01367 01368 /* First try to decide what to do without reference to look-ahead token. */ 01369 yyn = yypact[yystate]; 01370 if (yyn == YYPACT_NINF) 01371 goto yydefault; 01372 01373 /* Not known => get a look-ahead token if don't already have one. */ 01374 01375 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ 01376 if (yychar == YYEMPTY) 01377 { 01378 YYDPRINTF ((stderr, "Reading a token: ")); 01379 yychar = YYLEX; 01380 } 01381 01382 if (yychar <= YYEOF) 01383 { 01384 yychar = yytoken = YYEOF; 01385 YYDPRINTF ((stderr, "Now at end of input.\n")); 01386 } 01387 else 01388 { 01389 yytoken = YYTRANSLATE (yychar); 01390 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 01391 } 01392 01393 /* If the proper action on seeing token YYTOKEN is to reduce or to 01394 detect an error, take that action. */ 01395 yyn += yytoken; 01396 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 01397 goto yydefault; 01398 yyn = yytable[yyn]; 01399 if (yyn <= 0) 01400 { 01401 if (yyn == 0 || yyn == YYTABLE_NINF) 01402 goto yyerrlab; 01403 yyn = -yyn; 01404 goto yyreduce; 01405 } 01406 01407 if (yyn == YYFINAL) 01408 YYACCEPT; 01409 01410 /* Count tokens shifted since error; after three, turn off error 01411 status. */ 01412 if (yyerrstatus) 01413 yyerrstatus--; 01414 01415 /* Shift the look-ahead token. */ 01416 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 01417 01418 /* Discard the shifted token unless it is eof. */ 01419 if (yychar != YYEOF) 01420 yychar = YYEMPTY; 01421 01422 yystate = yyn; 01423 *++yyvsp = yylval; 01424 01425 goto yynewstate; 01426 01427 01428 /*-----------------------------------------------------------. 01429 | yydefault -- do the default action for the current state. | 01430 `-----------------------------------------------------------*/ 01431 yydefault: 01432 yyn = yydefact[yystate]; 01433 if (yyn == 0) 01434 goto yyerrlab; 01435 goto yyreduce; 01436 01437 01438 /*-----------------------------. 01439 | yyreduce -- Do a reduction. | 01440 `-----------------------------*/ 01441 yyreduce: 01442 /* yyn is the number of a rule to reduce with. */ 01443 yylen = yyr2[yyn]; 01444 01445 /* If YYLEN is nonzero, implement the default value of the action: 01446 `$$ = $1'. 01447 01448 Otherwise, the following line sets YYVAL to garbage. 01449 This behavior is undocumented and Bison 01450 users should not rely upon it. Assigning to YYVAL 01451 unconditionally makes the parser a bit smaller, and it avoids a 01452 GCC warning that YYVAL may be used uninitialized. */ 01453 yyval = yyvsp[1-yylen]; 01454 01455 01456 YY_REDUCE_PRINT (yyn); 01457 switch (yyn) 01458 { 01459 case 2: 01460 01461 { g_resultValue = (yyvsp[(1) - (1)]); return 0; ;} 01462 break; 01463 01464 case 3: 01465 01466 { (yyval) = (yyvsp[(1) - (1)]); ;} 01467 break; 01468 01469 case 4: 01470 01471 { 01472 bool c = ((yyvsp[(1) - (5)]).isInt() ? ((long)(yyvsp[(1) - (5)]) != 0) : ((double)(yyvsp[(1) - (5)]) != 0.0)); 01473 (yyval) = c ? (yyvsp[(3) - (5)]) : (yyvsp[(5) - (5)]); 01474 ;} 01475 break; 01476 01477 case 5: 01478 01479 { (yyval) = (yyvsp[(1) - (1)]); ;} 01480 break; 01481 01482 case 6: 01483 01484 { 01485 (yyval) = CPPValue( (long)((long)(yyvsp[(1) - (3)]) || (long)(yyvsp[(3) - (3)])) ); 01486 ;} 01487 break; 01488 01489 case 7: 01490 01491 { (yyval) = (yyvsp[(1) - (1)]); ;} 01492 break; 01493 01494 case 8: 01495 01496 { 01497 (yyval) = CPPValue( (long)((long)(yyvsp[(1) - (3)]) && (long)(yyvsp[(3) - (3)])) ); 01498 ;} 01499 break; 01500 01501 case 9: 01502 01503 { (yyval) = (yyvsp[(1) - (1)]); ;} 01504 break; 01505 01506 case 10: 01507 01508 { 01509 (yyval) = CPPValue( (long)(yyvsp[(1) - (3)]) | (long)(yyvsp[(3) - (3)]) ); 01510 ;} 01511 break; 01512 01513 case 11: 01514 01515 { (yyval) = (yyvsp[(1) - (1)]); ;} 01516 break; 01517 01518 case 12: 01519 01520 { 01521 (yyval) = CPPValue( (long)(yyvsp[(1) - (3)]) ^ (long)(yyvsp[(3) - (3)]) ); 01522 ;} 01523 break; 01524 01525 case 13: 01526 01527 { (yyval) = (yyvsp[(1) - (1)]); ;} 01528 break; 01529 01530 case 14: 01531 01532 { 01533 (yyval) = CPPValue( (long)(yyvsp[(1) - (3)]) & (long)(yyvsp[(3) - (3)]) ); 01534 ;} 01535 break; 01536 01537 case 15: 01538 01539 { (yyval) = (yyvsp[(1) - (1)]); ;} 01540 break; 01541 01542 case 16: 01543 01544 { 01545 (yyval) = CPPValue( (long)((double)(yyvsp[(1) - (3)]) == (double)(yyvsp[(3) - (3)])) ); 01546 ;} 01547 break; 01548 01549 case 17: 01550 01551 { 01552 (yyval) = CPPValue( (long)((double)(yyvsp[(1) - (3)]) != (double)(yyvsp[(3) - (3)])) ); 01553 ;} 01554 break; 01555 01556 case 18: 01557 01558 { (yyval) = (yyvsp[(1) - (1)]); ;} 01559 break; 01560 01561 case 19: 01562 01563 { 01564 (yyval) = CPPValue( (long)((double)(yyvsp[(1) - (3)]) < (double)(yyvsp[(3) - (3)])) ); 01565 ;} 01566 break; 01567 01568 case 20: 01569 01570 { 01571 (yyval) = CPPValue( (long)((double)(yyvsp[(1) - (3)]) > (double)(yyvsp[(3) - (3)])) ); 01572 ;} 01573 break; 01574 01575 case 21: 01576 01577 { 01578 (yyval) = CPPValue( (long)((double)(yyvsp[(1) - (3)]) <= (double)(yyvsp[(3) - (3)])) ); 01579 ;} 01580 break; 01581 01582 case 22: 01583 01584 { 01585 (yyval) = CPPValue( (long)((double)(yyvsp[(1) - (3)]) >= (double)(yyvsp[(3) - (3)])) ); 01586 ;} 01587 break; 01588 01589 case 23: 01590 01591 { (yyval) = (yyvsp[(1) - (1)]); ;} 01592 break; 01593 01594 case 24: 01595 01596 { 01597 (yyval) = CPPValue( (long)(yyvsp[(1) - (3)]) << (long)(yyvsp[(3) - (3)]) ); 01598 ;} 01599 break; 01600 01601 case 25: 01602 01603 { 01604 (yyval) = CPPValue( (long)(yyvsp[(1) - (3)]) >> (long)(yyvsp[(3) - (3)]) ); 01605 ;} 01606 break; 01607 01608 case 26: 01609 01610 { (yyval) = (yyvsp[(1) - (1)]); ;} 01611 break; 01612 01613 case 27: 01614 01615 { 01616 if (!(yyvsp[(1) - (3)]).isInt() || !(yyvsp[(3) - (3)]).isInt()) 01617 { 01618 (yyval) = CPPValue( (double)(yyvsp[(1) - (3)]) + (double)(yyvsp[(3) - (3)]) ); 01619 } 01620 else 01621 { 01622 (yyval) = CPPValue( (long)(yyvsp[(1) - (3)]) + (long)(yyvsp[(3) - (3)]) ); 01623 } 01624 ;} 01625 break; 01626 01627 case 28: 01628 01629 { 01630 if (!(yyvsp[(1) - (3)]).isInt() || !(yyvsp[(3) - (3)]).isInt()) 01631 { 01632 (yyval) = CPPValue( (double)(yyvsp[(1) - (3)]) - (double)(yyvsp[(3) - (3)]) ); 01633 } 01634 else 01635 { 01636 (yyval) = CPPValue( (long)(yyvsp[(1) - (3)]) - (long)(yyvsp[(3) - (3)]) ); 01637 } 01638 ;} 01639 break; 01640 01641 case 29: 01642 01643 { (yyval) = (yyvsp[(1) - (1)]); ;} 01644 break; 01645 01646 case 30: 01647 01648 { 01649 if (!(yyvsp[(1) - (3)]).isInt() || !(yyvsp[(3) - (3)]).isInt()) 01650 { 01651 (yyval) = CPPValue( (double)(yyvsp[(1) - (3)]) * (double)(yyvsp[(3) - (3)]) ); 01652 } 01653 else 01654 { 01655 (yyval) = CPPValue( (long)(yyvsp[(1) - (3)]) * (long)(yyvsp[(3) - (3)]) ); 01656 } 01657 ;} 01658 break; 01659 01660 case 31: 01661 01662 { 01663 if (!(yyvsp[(1) - (3)]).isInt() || !(yyvsp[(3) - (3)]).isInt()) 01664 { 01665 (yyval) = CPPValue( (double)(yyvsp[(1) - (3)]) / (double)(yyvsp[(3) - (3)]) ); 01666 } 01667 else 01668 { 01669 long value = (yyvsp[(3) - (3)]); 01670 if (value==0) value=1; 01671 (yyval) = CPPValue( (long)(yyvsp[(1) - (3)]) / value ); 01672 } 01673 ;} 01674 break; 01675 01676 case 32: 01677 01678 { 01679 long value = (yyvsp[(3) - (3)]); 01680 if (value==0) value=1; 01681 (yyval) = CPPValue( (long)(yyvsp[(1) - (3)]) % value ); 01682 ;} 01683 break; 01684 01685 case 33: 01686 01687 { (yyval) = (yyvsp[(1) - (1)]); ;} 01688 break; 01689 01690 case 34: 01691 01692 { (yyval) = (yyvsp[(1) - (2)]); ;} 01693 break; 01694 01695 case 35: 01696 01697 { 01698 if ((yyvsp[(2) - (2)]).isInt()) 01699 (yyval) = CPPValue(-(long)(yyvsp[(2) - (2)])); 01700 else 01701 (yyval) = CPPValue(-(double)(yyvsp[(2) - (2)])); 01702 ;} 01703 break; 01704 01705 case 36: 01706 01707 { 01708 (yyval) = CPPValue(~(long)(yyvsp[(2) - (2)])); 01709 ;} 01710 break; 01711 01712 case 37: 01713 01714 { 01715 (yyval) = CPPValue((long)!(long)(yyvsp[(2) - (2)])); 01716 ;} 01717 break; 01718 01719 case 38: 01720 01721 { (yyval) = (yyvsp[(1) - (1)]); ;} 01722 break; 01723 01724 case 39: 01725 01726 { (yyval) = (yyvsp[(2) - (3)]); ;} 01727 break; 01728 01729 case 40: 01730 01731 { (yyval) = parseOctal(); ;} 01732 break; 01733 01734 case 41: 01735 01736 { (yyval) = parseDecimal(); ;} 01737 break; 01738 01739 case 42: 01740 01741 { (yyval) = parseHexadecimal(); ;} 01742 break; 01743 01744 case 43: 01745 01746 { (yyval) = parseCharacter(); ;} 01747 break; 01748 01749 case 44: 01750 01751 { (yyval) = parseFloat(); ;} 01752 break; 01753 01754 01755 /* Line 1267 of yacc.c. */ 01756 01757 default: break; 01758 } 01759 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 01760 01761 YYPOPSTACK (yylen); 01762 yylen = 0; 01763 YY_STACK_PRINT (yyss, yyssp); 01764 01765 *++yyvsp = yyval; 01766 01767 01768 /* Now `shift' the result of the reduction. Determine what state 01769 that goes to, based on the state we popped back to and the rule 01770 number reduced by. */ 01771 01772 yyn = yyr1[yyn]; 01773 01774 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 01775 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 01776 yystate = yytable[yystate]; 01777 else 01778 yystate = yydefgoto[yyn - YYNTOKENS]; 01779 01780 goto yynewstate; 01781 01782 01783 /*------------------------------------. 01784 | yyerrlab -- here on detecting error | 01785 `------------------------------------*/ 01786 yyerrlab: 01787 /* If not already recovering from an error, report this error. */ 01788 if (!yyerrstatus) 01789 { 01790 ++yynerrs; 01791 #if ! YYERROR_VERBOSE 01792 yyerror (YY_("syntax error")); 01793 #else 01794 { 01795 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); 01796 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) 01797 { 01798 YYSIZE_T yyalloc = 2 * yysize; 01799 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) 01800 yyalloc = YYSTACK_ALLOC_MAXIMUM; 01801 if (yymsg != yymsgbuf) 01802 YYSTACK_FREE (yymsg); 01803 yymsg = (char *) YYSTACK_ALLOC (yyalloc); 01804 if (yymsg) 01805 yymsg_alloc = yyalloc; 01806 else 01807 { 01808 yymsg = yymsgbuf; 01809 yymsg_alloc = sizeof yymsgbuf; 01810 } 01811 } 01812 01813 if (0 < yysize && yysize <= yymsg_alloc) 01814 { 01815 (void) yysyntax_error (yymsg, yystate, yychar); 01816 yyerror (yymsg); 01817 } 01818 else 01819 { 01820 yyerror (YY_("syntax error")); 01821 if (yysize != 0) 01822 goto yyexhaustedlab; 01823 } 01824 } 01825 #endif 01826 } 01827 01828 01829 01830 if (yyerrstatus == 3) 01831 { 01832 /* If just tried and failed to reuse look-ahead token after an 01833 error, discard it. */ 01834 01835 if (yychar <= YYEOF) 01836 { 01837 /* Return failure if at end of input. */ 01838 if (yychar == YYEOF) 01839 YYABORT; 01840 } 01841 else 01842 { 01843 yydestruct ("Error: discarding", 01844 yytoken, &yylval); 01845 yychar = YYEMPTY; 01846 } 01847 } 01848 01849 /* Else will try to reuse look-ahead token after shifting the error 01850 token. */ 01851 goto yyerrlab1; 01852 01853 01854 /*---------------------------------------------------. 01855 | yyerrorlab -- error raised explicitly by YYERROR. | 01856 `---------------------------------------------------*/ 01857 yyerrorlab: 01858 01859 /* Pacify compilers like GCC when the user code never invokes 01860 YYERROR and the label yyerrorlab therefore never appears in user 01861 code. */ 01862 if (/*CONSTCOND*/ 0) 01863 goto yyerrorlab; 01864 01865 /* Do not reclaim the symbols of the rule which action triggered 01866 this YYERROR. */ 01867 YYPOPSTACK (yylen); 01868 yylen = 0; 01869 YY_STACK_PRINT (yyss, yyssp); 01870 yystate = *yyssp; 01871 goto yyerrlab1; 01872 01873 01874 /*-------------------------------------------------------------. 01875 | yyerrlab1 -- common code for both syntax error and YYERROR. | 01876 `-------------------------------------------------------------*/ 01877 yyerrlab1: 01878 yyerrstatus = 3; /* Each real token shifted decrements this. */ 01879 01880 for (;;) 01881 { 01882 yyn = yypact[yystate]; 01883 if (yyn != YYPACT_NINF) 01884 { 01885 yyn += YYTERROR; 01886 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 01887 { 01888 yyn = yytable[yyn]; 01889 if (0 < yyn) 01890 break; 01891 } 01892 } 01893 01894 /* Pop the current state because it cannot handle the error token. */ 01895 if (yyssp == yyss) 01896 YYABORT; 01897 01898 01899 yydestruct ("Error: popping", 01900 yystos[yystate], yyvsp); 01901 YYPOPSTACK (1); 01902 yystate = *yyssp; 01903 YY_STACK_PRINT (yyss, yyssp); 01904 } 01905 01906 if (yyn == YYFINAL) 01907 YYACCEPT; 01908 01909 *++yyvsp = yylval; 01910 01911 01912 /* Shift the error token. */ 01913 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 01914 01915 yystate = yyn; 01916 goto yynewstate; 01917 01918 01919 /*-------------------------------------. 01920 | yyacceptlab -- YYACCEPT comes here. | 01921 `-------------------------------------*/ 01922 yyacceptlab: 01923 yyresult = 0; 01924 goto yyreturn; 01925 01926 /*-----------------------------------. 01927 | yyabortlab -- YYABORT comes here. | 01928 `-----------------------------------*/ 01929 yyabortlab: 01930 yyresult = 1; 01931 goto yyreturn; 01932 01933 #ifndef yyoverflow 01934 /*-------------------------------------------------. 01935 | yyexhaustedlab -- memory exhaustion comes here. | 01936 `-------------------------------------------------*/ 01937 yyexhaustedlab: 01938 yyerror (YY_("memory exhausted")); 01939 yyresult = 2; 01940 /* Fall through. */ 01941 #endif 01942 01943 yyreturn: 01944 if (yychar != YYEOF && yychar != YYEMPTY) 01945 yydestruct ("Cleanup: discarding lookahead", 01946 yytoken, &yylval); 01947 /* Do not reclaim the symbols of the rule which action triggered 01948 this YYABORT or YYACCEPT. */ 01949 YYPOPSTACK (yylen); 01950 YY_STACK_PRINT (yyss, yyssp); 01951 while (yyssp != yyss) 01952 { 01953 yydestruct ("Cleanup: popping", 01954 yystos[*yyssp], yyvsp); 01955 YYPOPSTACK (1); 01956 } 01957 #ifndef yyoverflow 01958 if (yyss != yyssa) 01959 YYSTACK_FREE (yyss); 01960 #endif 01961 #if YYERROR_VERBOSE 01962 if (yymsg != yymsgbuf) 01963 YYSTACK_FREE (yymsg); 01964 #endif 01965 /* Make sure YYID is used. */ 01966 return YYID (yyresult); 01967 } 01968 01969 01970 01971 01972