ce_parse.cpp

Go to the documentation of this file.
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 



Generated on Mon Mar 31 10:58:32 2008 by  doxygen 1.5.1