SelectionFilter.tab.c

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

Generated on Wed Nov 23 19:00:37 2011 for FreeCAD by  doxygen 1.6.1