(file) Return to WQLYACC.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / WQL

Diff for /pegasus/src/Pegasus/WQL/WQLYACC.cpp between version 1.13 and 1.14

version 1.13, 2005/05/16 21:19:07 version 1.14, 2005/05/24 20:26:33
Line 1 
Line 1 
 /* A Bison parser, made by GNU Bison 1.875c.  */  
  
 /* Skeleton parser for Yacc-like parsing with Bison,  /*  A Bison parser, made from wql.y
    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.      by GNU Bison version 1.28  */
  
    This program is free software; you can redistribute it and/or modify  #define YYBISON 1  /* Identify Bison output.  */
    it under the terms of the GNU General Public License as published by  
    the Free Software Foundation; either version 2, or (at your option)  
    any later version.  
   
    This program is distributed in the hope that it will be useful,  
    but WITHOUT ANY WARRANTY; without even the implied warranty of  
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
    GNU General Public License for more details.  
   
    You should have received a copy of the GNU General Public License  
    along with this program; if not, write to the Free Software  
    Foundation, Inc., 59 Temple Place - Suite 330,  
    Boston, MA 02111-1307, USA.  */  
   
 /* As a special exception, when this file is copied by Bison into a  
    Bison output file, you may use that output file without restriction.  
    This special exception was added by the Free Software Foundation  
    in version 1.24 of Bison.  */  
   
 /* Written by Richard Stallman by simplifying the original so called  
    ``semantic'' parser.  */  
   
 /* All symbols defined below should begin with yy or YY, to avoid  
    infringing on user name space.  This should be done even for local  
    variables, as they might otherwise be expanded by user macros.  
    There are some unavoidable exceptions within include files to  
    define necessary library symbols; they are noted "INFRINGES ON  
    USER NAME SPACE" below.  */  
   
 /* Identify Bison output.  */  
 #define YYBISON 1  
   
 /* Skeleton name.  */  
 #define YYSKELETON_NAME "yacc.c"  
   
 /* Pure parsers.  */  
 #define YYPURE 0  
   
 /* Using locations.  */  
 #define YYLSP_NEEDED 0  
  
 /* If NAME_PREFIX is specified substitute the variables and functions  
    names.  */  
 #define yyparse WQL_parse #define yyparse WQL_parse
 #define yylex   WQL_lex #define yylex   WQL_lex
 #define yyerror WQL_error #define yyerror WQL_error
Line 54 
Line 11 
 #define yychar  WQL_char #define yychar  WQL_char
 #define yydebug WQL_debug #define yydebug WQL_debug
 #define yynerrs WQL_nerrs #define yynerrs WQL_nerrs
   #define TOK_INTEGER     257
   #define TOK_DOUBLE      258
 /* Tokens.  */  #define TOK_STRING      259
 #ifndef YYTOKENTYPE  #define TOK_TRUE        260
 # define YYTOKENTYPE  #define TOK_FALSE       261
    /* Put the tokens into the symbol table, so that GDB and other debuggers  #define TOK_NULL        262
       know about them.  */  #define TOK_ISA 263
    enum yytokentype {  #define TOK_DOT 264
      TOK_INTEGER = 258,  
      TOK_DOUBLE = 259,  
      TOK_STRING = 260,  
      TOK_TRUE = 261,  
      TOK_FALSE = 262,  
      TOK_NULL = 263,  
      TOK_ISA = 264,  
      TOK_EQ = 265,  
      TOK_NE = 266,  
      TOK_LT = 267,  
      TOK_LE = 268,  
      TOK_GT = 269,  
      TOK_GE = 270,  
      TOK_NOT = 271,  
      TOK_OR = 272,  
      TOK_AND = 273,  
      TOK_IS = 274,  
      TOK_IDENTIFIER = 275,  
      TOK_SELECT = 276,  
      TOK_WHERE = 277,  
      TOK_FROM = 278,  
      TOK_UNEXPECTED_CHAR = 279  
    };  
 #endif  
 #define TOK_INTEGER 258  
 #define TOK_DOUBLE 259  
 #define TOK_STRING 260  
 #define TOK_TRUE 261  
 #define TOK_FALSE 262  
 #define TOK_NULL 263  
 #define TOK_ISA 264  
 #define TOK_EQ 265 #define TOK_EQ 265
 #define TOK_NE 266 #define TOK_NE 266
 #define TOK_LT 267 #define TOK_LT 267
Line 109 
Line 35 
 #define TOK_FROM 278 #define TOK_FROM 278
 #define TOK_UNEXPECTED_CHAR 279 #define TOK_UNEXPECTED_CHAR 279
  
   #line 37 "wql.y"
   
   
 /* Copy the first part of user declarations.  */  
 #line 37 "WQL.y"  
  
  
 #include <Pegasus/Common/Config.h> #include <Pegasus/Common/Config.h>
Line 154 
Line 76 
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END
  
  
   #line 86 "wql.y"
 /* Enabling traces.  */  typedef union
 #ifndef YYDEBUG  {
 # define YYDEBUG 0  
 #endif  
   
 /* Enabling verbose error messages.  */  
 #ifdef YYERROR_VERBOSE  
 # undef YYERROR_VERBOSE  
 # define YYERROR_VERBOSE 1  
 #else  
 # define YYERROR_VERBOSE 0  
 #endif  
   
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)  
 #line 87 "WQL.y"  
 typedef union YYSTYPE {  
    int intValue;    int intValue;
    double doubleValue;    double doubleValue;
    char* strValue;    char* strValue;
    void* nodeValue;    void* nodeValue;
 } YYSTYPE; } YYSTYPE;
 /* Line 191 of yacc.c.  */  #include <stdio.h>
 #line 181 "WQLtemp"  
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */  
 # define YYSTYPE_IS_DECLARED 1  
 # define YYSTYPE_IS_TRIVIAL 1  
 #endif  
   
   
   
 /* Copy the second part of user declarations.  */  
   
   
 /* Line 214 of yacc.c.  */  
 #line 193 "WQLtemp"  
   
 #if ! defined (yyoverflow) || YYERROR_VERBOSE  
   
 # ifndef YYFREE  
 #  define YYFREE free  
 # endif  
 # ifndef YYMALLOC  
 #  define YYMALLOC malloc  
 # endif  
   
 /* The parser invokes alloca or malloc; define the necessary symbols.  */  
   
 # ifdef YYSTACK_USE_ALLOCA  
 #  if YYSTACK_USE_ALLOCA  
 #   define YYSTACK_ALLOC alloca  
 #  endif  
 # else  
 #  if defined (alloca) || defined (_ALLOCA_H)  
 #   define YYSTACK_ALLOC alloca  
 #  else  
 #   ifdef __GNUC__  
 #    define YYSTACK_ALLOC __builtin_alloca  
 #   endif  
 #  endif  
 # endif  
   
 # ifdef YYSTACK_ALLOC  
    /* Pacify GCC's `empty if-body' warning. */  
 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)  
 # else  
 #  if defined (__STDC__) || defined (__cplusplus)  
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */  
 #   define YYSIZE_T size_t  
 #  endif  
 #  define YYSTACK_ALLOC YYMALLOC  
 #  define YYSTACK_FREE YYFREE  
 # endif  
 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */  
   
   
 #if (! defined (yyoverflow) \  
      && (! defined (__cplusplus) \  
          || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))  
   
 /* A type that is properly aligned for any stack member.  */  
 union yyalloc  
 {  
   short yyss;  
   YYSTYPE yyvs;  
   };  
   
 /* The size of the maximum gap between one aligned stack and the next.  */  
 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)  
   
 /* The size of an array large to enough to hold all stacks, each with  
    N elements.  */  
 # define YYSTACK_BYTES(N) \  
      ((N) * (sizeof (short) + sizeof (YYSTYPE))                         \  
       + YYSTACK_GAP_MAXIMUM)  
   
 /* Copy COUNT objects from FROM to TO.  The source and destination do  
    not overlap.  */  
 # ifndef YYCOPY  
 #  if defined (__GNUC__) && 1 < __GNUC__  
 #   define YYCOPY(To, From, Count) \  
       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))  
 #  else  
 #   define YYCOPY(To, From, Count)              \  
       do                                        \  
         {                                       \  
           register YYSIZE_T yyi;                \  
           for (yyi = 0; yyi < (Count); yyi++)   \  
             (To)[yyi] = (From)[yyi];            \  
         }                                       \  
       while (0)  
 #  endif  
 # endif  
   
 /* Relocate STACK from its old location to the new one.  The  
    local variables YYSIZE and YYSTACKSIZE give the old and new number of  
    elements in the stack, and YYPTR gives the new location of the  
    stack.  Advance YYPTR to a properly aligned location for the next  
    stack.  */  
 # define YYSTACK_RELOCATE(Stack)                                        \  
     do                                                                  \  
       {                                                                 \  
         YYSIZE_T yynewbytes;                                            \  
         YYCOPY (&yyptr->Stack, Stack, yysize);                          \  
         Stack = &yyptr->Stack;                                          \  
         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \  
         yyptr += yynewbytes / sizeof (*yyptr);                          \  
       }                                                                 \  
     while (0)  
  
   #ifndef __cplusplus
   #ifndef __STDC__
   #define const
 #endif #endif
   
 #if defined (__STDC__) || defined (__cplusplus)  
    typedef signed char yysigned_char;  
 #else  
    typedef short yysigned_char;  
 #endif #endif
  
 /* YYFINAL -- State number of the termination state. */  
 #define YYFINAL  9  
 /* YYLAST -- Last index in YYTABLE.  */  
 #define YYLAST   66  
  
 /* YYNTOKENS -- Number of terminals. */  
 #define YYNTOKENS  29  
 /* YYNNTS -- Number of nonterminals. */  
 #define YYNNTS  16  
 /* YYNRULES -- Number of rules. */  
 #define YYNRULES  38  
 /* YYNRULES -- Number of states. */  
 #define YYNSTATES  63  
  
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */  #define YYFINAL         65
 #define YYUNDEFTOK  2  #define YYFLAG          -32768
 #define YYMAXUTOK   279  #define YYNTBASE        30
  
 #define YYTRANSLATE(YYX)                                                \  #define YYTRANSLATE(x) ((unsigned)(x) <= 279 ? yytranslate[x] : 45)
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)  
  
 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */  static const char yytranslate[] = {     0,
 static const unsigned char yytranslate[] =  
 {  
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,  
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       27,    28,    25,     2,    26,     2,     2,     2,     2,     2,       2,     2,     2,     2,     2,     2,     2,     2,     2,    28,
       29,    26,     2,    27,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Line 341 
Line 126 
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,       2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24      17,    18,    19,    20,    21,    22,    23,    24,    25
 }; };
  
 #if YYDEBUG  #if YYDEBUG != 0
 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in  static const short yyprhs[] = {     0,
    YYRHS.  */       0,     2,     6,     8,    10,    12,    16,    19,    21,    24,
 static const unsigned char yyprhs[] =      27,    31,    35,    38,    42,    44,    48,    53,    55,    57,
 {      61,    65,    69,    73,    77,    81,    85,    89,    94,    96,
        0,     0,     3,     5,     9,    11,    13,    15,    19,    22,      98,   100,   104,   106,   108,   110,   112,   114
       24,    27,    30,    34,    38,    41,    45,    47,    51,    56,  
       58,    60,    64,    68,    72,    76,    80,    84,    88,    92,  
       97,    99,   101,   103,   105,   107,   109,   111,   113  
 }; };
  
 /* YYRHS -- A `-1'-separated list of the rules' RHS. */  static const short yyrhs[] = {    31,
 static const yysigned_char yyrhs[] =       0,    22,    32,    34,     0,    26,     0,    33,     0,    42,
 {       0,    33,    27,    42,     0,    35,    36,     0,    35,     0,
       30,     0,    -1,    31,    -1,    21,    32,    34,    -1,    25,      24,    43,     0,    23,    37,     0,    37,    18,    37,     0,
       -1,    33,    -1,    42,    -1,    33,    26,    42,    -1,    35,      37,    19,    37,     0,    17,    37,     0,    28,    37,    29,
       36,    -1,    35,    -1,    23,    43,    -1,    22,    37,    -1,       0,    38,     0,    38,    20,    41,     0,    38,    20,    17,
       37,    17,    37,    -1,    37,    18,    37,    -1,    16,    37,      41,     0,    39,     0,    40,     0,    44,    13,    44,     0,
       -1,    27,    37,    28,    -1,    38,    -1,    38,    19,    41,      44,    15,    44,     0,    44,    14,    44,     0,    44,    16,
       -1,    38,    19,    16,    41,    -1,    39,    -1,    40,    -1,      44,     0,    44,    11,    44,     0,    44,    12,    44,     0,
       44,    12,    44,    -1,    44,    14,    44,    -1,    44,    13,      42,     9,    43,     0,    44,    20,     8,     0,    44,    20,
       44,    -1,    44,    15,    44,    -1,    44,    10,    44,    -1,      17,     8,     0,     6,     0,     7,     0,    21,     0,    21,
       44,    11,    44,    -1,    42,     9,    43,    -1,    44,    19,      10,    21,     0,    21,     0,    42,     0,     3,     0,     4,
        8,    -1,    44,    19,    16,     8,    -1,     6,    -1,     7,       0,     5,     0,    41,     0
       -1,    20,    -1,    20,    -1,    42,    -1,     3,    -1,     4,  
       -1,     5,    -1,    41,    -1  
 }; };
  
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */  
 static const unsigned short yyrline[] =  
 {  
        0,   159,   159,   165,   171,   175,   181,   185,   191,   195,  
      201,   208,   214,   219,   224,   230,   234,   238,   243,   252,  
      256,   262,   267,   272,   277,   282,   287,   292,   301,   306,  
      313,   317,   323,   329,   336,   342,   347,   352,   357  
 };  
 #endif #endif
  
 #if YYDEBUG || YYERROR_VERBOSE  #if YYDEBUG != 0
 /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.  static const short yyrline[] = { 0,
    First, the terminals, then, starting at YYNTOKENS, nonterminals. */     160,   166,   172,   176,   182,   186,   192,   196,   202,   209,
 static const char *const yytname[] =     215,   220,   225,   231,   235,   239,   244,   253,   257,   263,
 {     268,   273,   278,   283,   288,   293,   303,   308,   315,   319,
   "$end", "error", "$undefined", "TOK_INTEGER", "TOK_DOUBLE",     332,   337,   349,   356,   362,   367,   372,   377
   "TOK_STRING", "TOK_TRUE", "TOK_FALSE", "TOK_NULL", "TOK_ISA", "TOK_EQ",  
   "TOK_NE", "TOK_LT", "TOK_LE", "TOK_GT", "TOK_GE", "TOK_NOT", "TOK_OR",  
   "TOK_AND", "TOK_IS", "TOK_IDENTIFIER", "TOK_SELECT", "TOK_WHERE",  
   "TOK_FROM", "TOK_UNEXPECTED_CHAR", "'*'", "','", "'('", "')'", "$accept",  
   "start", "selectStatement", "selectList", "propertyList",  
   "selectExpression", "fromClause", "whereClause", "searchCondition",  
   "predicate", "comparisonPredicate", "nullPredicate", "truthValue",  
   "propertyName", "className", "comparisonTerm", 0  
 }; };
 #endif #endif
  
 # ifdef YYPRINT  
 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to  #if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
    token YYLEX-NUM.  */  
 static const unsigned short yytoknum[] =  static const char * const yytname[] = {   "$","error","$undefined.","TOK_INTEGER",
 {  "TOK_DOUBLE","TOK_STRING","TOK_TRUE","TOK_FALSE","TOK_NULL","TOK_ISA","TOK_DOT",
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,  "TOK_EQ","TOK_NE","TOK_LT","TOK_LE","TOK_GT","TOK_GE","TOK_NOT","TOK_OR","TOK_AND",
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,  "TOK_IS","TOK_IDENTIFIER","TOK_SELECT","TOK_WHERE","TOK_FROM","TOK_UNEXPECTED_CHAR",
      275,   276,   277,   278,   279,    42,    44,    40,    41  "'*'","','","'('","')'","start","selectStatement","selectList","propertyList",
   "selectExpression","fromClause","whereClause","searchCondition","predicate",
   "comparisonPredicate","nullPredicate","truthValue","propertyName","className",
   "comparisonTerm", NULL
 }; };
 # endif # endif
  
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */  static const short yyr1[] = {     0,
 static const unsigned char yyr1[] =      30,    31,    32,    32,    33,    33,    34,    34,    35,    36,
 {      37,    37,    37,    37,    37,    37,    37,    38,    38,    39,
        0,    29,    30,    31,    32,    32,    33,    33,    34,    34,      39,    39,    39,    39,    39,    39,    40,    40,    41,    41,
       35,    36,    37,    37,    37,    37,    37,    37,    37,    38,      42,    42,    43,    44,    44,    44,    44,    44
       38,    39,    39,    39,    39,    39,    39,    39,    40,    40,  
       41,    41,    42,    43,    44,    44,    44,    44,    44  
 }; };
  
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */  static const short yyr2[] = {     0,
 static const unsigned char yyr2[] =       1,     3,     1,     1,     1,     3,     2,     1,     2,     2,
 {       3,     3,     2,     3,     1,     3,     4,     1,     1,     3,
        0,     2,     1,     3,     1,     1,     1,     3,     2,     1,       3,     3,     3,     3,     3,     3,     3,     4,     1,     1,
        2,     2,     3,     3,     2,     3,     1,     3,     4,     1,       1,     3,     1,     1,     1,     1,     1,     1
        1,     3,     3,     3,     3,     3,     3,     3,     3,     4,  
        1,     1,     1,     1,     1,     1,     1,     1,     1  
 }; };
  
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state  static const short yydefact[] = {     0,
    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero       0,     1,    31,     3,     0,     4,     5,     0,     0,     2,
    means the default is an error.  */       8,     0,    32,    33,     9,     0,     7,     6,    35,    36,
 static const unsigned char yydefact[] =      37,    29,    30,     0,     0,    10,    15,    18,    19,    38,
 {      34,     0,    13,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     2,    32,     4,     0,     5,     6,     1,       0,     0,     0,     0,     0,    14,    11,    12,     0,    16,
        0,     3,     9,     0,    33,    10,     0,     8,     7,    35,      26,    34,    24,    25,    20,    22,    21,    23,    27,     0,
       36,    37,    30,    31,     0,     0,    11,    16,    19,    20,      17,    28,     0,     0,     0
       38,    34,     0,    14,     0,     0,     0,     0,     0,     0,  
        0,     0,     0,     0,     0,     0,    15,    12,    13,     0,  
       17,    27,    34,    25,    26,    21,    23,    22,    24,    28,  
        0,    18,    29  
 }; };
  
 /* YYDEFGOTO[NTERM-NUM]. */  static const short yydefgoto[] = {    63,
 static const yysigned_char yydefgoto[] =       2,     5,     6,    10,    11,    17,    26,    27,    28,    29,
 {      30,    52,    15,    32
       -1,     2,     3,     6,     7,    11,    12,    17,    26,    27,  
       28,    29,    30,    52,    15,    32  
 }; };
  
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing  static const short yypact[] = {   -12,
    STATE-NUM.  */      -7,-32768,     6,-32768,    -2,    12,-32768,    25,    39,-32768,
 #define YYPACT_NINF -28       4,    40,-32768,-32768,-32768,     0,-32768,-32768,-32768,-32768,
 static const yysigned_char yypact[] =  -32768,-32768,-32768,     0,     0,    38,    42,-32768,-32768,-32768,
 {      54,    29,-32768,     7,     0,     0,    31,    39,    26,    26,
       12,    -9,    40,   -28,   -28,   -28,    27,    16,   -28,   -28,      26,    26,    26,    26,     1,-32768,    45,-32768,    52,-32768,
       31,   -28,    30,    41,   -28,   -28,    -2,   -28,   -28,   -28,  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    57,
      -28,   -28,   -28,   -28,    -2,    -2,    19,    43,   -28,   -28,  -32768,-32768,    66,    67,-32768
      -28,    51,    34,   -28,   -11,    -2,    -2,    25,    31,    23,  
       23,    23,    23,    23,    23,     5,   -28,    45,   -28,    32,  
      -28,   -28,   -28,   -28,   -28,   -28,   -28,   -28,   -28,   -28,  
       56,   -28,   -28  
 }; };
  
 /* YYPGOTO[NTERM-NUM].  */  static const short yypgoto[] = {-32768,
 static const yysigned_char yypgoto[] =  -32768,-32768,-32768,-32768,-32768,-32768,   -23,-32768,-32768,-32768,
 {     -29,    -1,    30,    11
      -28,   -28,   -28,   -28,   -28,   -28,   -28,   -28,   -16,   -28,  
      -28,   -28,   -27,    -1,    28,    15  
 }; };
  
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If  
    positive, shift that token.  If negative, reduce the rule which  
    number is the opposite.  If zero, do what YYDEFACT says.  
    If YYTABLE_NINF, syntax error.  */  
 #define YYTABLE_NINF -1  
 static const unsigned char yytable[] =  
 {  
        8,    19,    20,    21,    22,    23,    35,    36,    33,    34,  
       50,     4,    18,    59,    24,    31,     5,    46,     4,    47,  
       48,    60,    61,    31,    31,    25,    19,    20,    21,    22,  
       23,    22,    23,     1,    31,    31,    35,    36,    22,    23,  
        9,    49,    13,     4,    39,    40,    41,    42,    43,    44,  
       10,    14,    16,    45,    53,    54,    55,    56,    57,    58,  
       38,     4,    37,    36,    62,     0,    51  
 };  
  
 static const yysigned_char yycheck[] =  #define YYLAST          68
 {  
        1,     3,     4,     5,     6,     7,    17,    18,    24,    25,  
       37,    20,    13,     8,    16,    16,    25,    28,    20,    35,  static const short yytable[] = {     7,
       36,    16,    49,    24,    25,    27,     3,     4,     5,     6,      33,    34,    19,    20,    21,    22,    23,    50,    59,     1,
        7,     6,     7,    21,    35,    36,    17,    18,     6,     7,      18,    47,    48,     3,    31,     8,    24,    60,     4,    61,
        0,    16,    26,    20,    10,    11,    12,    13,    14,    15,       3,     9,    31,    31,    35,    36,    16,    25,    19,    20,
       23,    20,    22,    19,    39,    40,    41,    42,    43,    44,      21,    22,    23,    31,    31,    46,    22,    23,    12,    39,
        9,    20,    19,    18,     8,    -1,    38      40,    41,    42,    43,    44,    13,     3,    49,    45,    53,
       54,    55,    56,    57,    58,    35,    36,    22,    23,    14,
        3,    37,    38,    36,    62,    64,    65,    51
 }; };
  
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing  static const short yycheck[] = {     1,
    symbol of state STATE-NUM.  */      24,    25,     3,     4,     5,     6,     7,    37,     8,    22,
 static const unsigned char yystos[] =      12,    35,    36,    21,    16,    10,    17,    17,    26,    49,
 {      21,    24,    24,    25,    18,    19,    23,    28,     3,     4,
        0,    21,    30,    31,    20,    25,    32,    33,    42,     0,       5,     6,     7,    35,    36,    29,     6,     7,    27,    11,
       23,    34,    35,    26,    20,    43,    22,    36,    42,     3,      12,    13,    14,    15,    16,    21,    21,    17,    20,    39,
        4,     5,     6,     7,    16,    27,    37,    38,    39,    40,      40,    41,    42,    43,    44,    18,    19,     6,     7,    21,
       41,    42,    44,    37,    37,    17,    18,    19,     9,    10,      21,    20,     9,    19,     8,     0,     0,    38
       11,    12,    13,    14,    15,    19,    28,    37,    37,    16,  
       41,    43,    42,    44,    44,    44,    44,    44,    44,     8,  
       16,    41,     8  
 }; };
   /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
   #line 3 "bison.simple"
   /* This file comes from bison-@bison_version@.  */
  
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)  /* Skeleton output parser for bison,
 # define YYSIZE_T __SIZE_TYPE__     Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
 #endif  
 #if ! defined (YYSIZE_T) && defined (size_t)     This program is free software; you can redistribute it and/or modify
 # define YYSIZE_T size_t     it under the terms of the GNU General Public License as published by
 #endif     the Free Software Foundation; either version 2, or (at your option)
 #if ! defined (YYSIZE_T)     any later version.
 # if defined (__STDC__) || defined (__cplusplus)  
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */     This program is distributed in the hope that it will be useful,
 #  define YYSIZE_T size_t     but WITHOUT ANY WARRANTY; without even the implied warranty of
 # endif     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      GNU General Public License for more details.
   
      You should have received a copy of the GNU General Public License
      along with this program; if not, write to the Free Software
      Foundation, Inc., 59 Temple Place - Suite 330,
      Boston, MA 02111-1307, USA.  */
   
   /* As a special exception, when this file is copied by Bison into a
      Bison output file, you may use that output file without restriction.
      This special exception was added by the Free Software Foundation
      in version 1.24 of Bison.  */
   
   /* This is the parser code that is written into each bison parser
     when the %semantic_parser declaration is not specified in the grammar.
     It was written by Richard Stallman by simplifying the hairy parser
     used when %semantic_parser is specified.  */
   
   #ifndef YYSTACK_USE_ALLOCA
   #ifdef alloca
   #define YYSTACK_USE_ALLOCA
   #else /* alloca not defined */
   #ifdef __GNUC__
   #define YYSTACK_USE_ALLOCA
   #define alloca __builtin_alloca
   #else /* not GNU C.  */
   #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
   #define YYSTACK_USE_ALLOCA
   #include <alloca.h>
   #else /* not sparc */
   /* We think this test detects Watcom and Microsoft C.  */
   /* This used to test MSDOS, but that is a bad idea
      since that symbol is in the user namespace.  */
   #if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
   #if 0 /* No need for malloc.h, which pollutes the namespace;
            instead, just don't use alloca.  */
   #include <malloc.h>
 #endif #endif
 #if ! defined (YYSIZE_T)  #else /* not MSDOS, or __TURBOC__ */
 # define YYSIZE_T unsigned int  #if defined(_AIX)
   /* I don't know what this was needed for, but it pollutes the namespace.
      So I turned it off.   rms, 2 May 1997.  */
   /* #include <malloc.h>  */
    #pragma alloca
   #define YYSTACK_USE_ALLOCA
   #else /* not MSDOS, or __TURBOC__, or _AIX */
   #if 0
   #ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
                    and on HPUX 10.  Eventually we can turn this on.  */
   #define YYSTACK_USE_ALLOCA
   #define alloca __builtin_alloca
   #endif /* __hpux */
   #endif
   #endif /* not _AIX */
   #endif /* not MSDOS, or __TURBOC__ */
   #endif /* not sparc */
   #endif /* not GNU C */
   #endif /* alloca not defined */
   #endif /* YYSTACK_USE_ALLOCA not defined */
   
   #ifdef YYSTACK_USE_ALLOCA
   #define YYSTACK_ALLOC alloca
   #else
   #define YYSTACK_ALLOC malloc
 #endif #endif
  
   /* Note: there must be only one dollar sign in this file.
      It is replaced by the list of actions, each action
      as one case of the switch.  */
   
 #define yyerrok         (yyerrstatus = 0) #define yyerrok         (yyerrstatus = 0)
 #define yyclearin       (yychar = YYEMPTY) #define yyclearin       (yychar = YYEMPTY)
 #define YYEMPTY         (-2)  #define YYEMPTY         -2
 #define YYEOF           0 #define YYEOF           0
   
 #define YYACCEPT        goto yyacceptlab #define YYACCEPT        goto yyacceptlab
 #define YYABORT         goto yyabortlab #define YYABORT         goto yyabortlab
 #define YYERROR         goto yyerrorlab  #define YYERROR         goto yyerrlab1
   /* Like YYERROR except do call yyerror.
      This remains here temporarily to ease the
 /* Like YYERROR except do call yyerror.  This remains here temporarily     transition to the new meaning of YYERROR, for GCC.
    to ease the transition to the new meaning of YYERROR, for GCC.  
    Once GCC version 2 has supplanted version 1, this can go.  */    Once GCC version 2 has supplanted version 1, this can go.  */
   
 #define YYFAIL          goto yyerrlab #define YYFAIL          goto yyerrlab
   
 #define YYRECOVERING()  (!!yyerrstatus) #define YYRECOVERING()  (!!yyerrstatus)
   #define YYBACKUP(token, value) \
 #define YYBACKUP(Token, Value)                                  \  
 do                                                              \ do                                                              \
   if (yychar == YYEMPTY && yylen == 1)                          \   if (yychar == YYEMPTY && yylen == 1)                          \
     {                                                           \      { yychar = (token), yylval = (value);                       \
       yychar = (Token);                                         \        yychar1 = YYTRANSLATE (yychar);                           \
       yylval = (Value);                                         \  
       yytoken = YYTRANSLATE (yychar);                           \  
       YYPOPSTACK;                                               \       YYPOPSTACK;                                               \
       goto yybackup;                                            \       goto yybackup;                                            \
     }                                                           \     }                                                           \
   else                                                          \   else                                                          \
     {                                                           \      { yyerror ("syntax error: cannot back up"); YYERROR; }      \
       yyerror ("syntax error: cannot back up");\  
       YYERROR;                                                  \  
     }                                                           \  
 while (0) while (0)
  
 #define YYTERROR        1 #define YYTERROR        1
 #define YYERRCODE       256 #define YYERRCODE       256
  
 /* YYLLOC_DEFAULT -- Compute the default location (before the actions  #ifndef YYPURE
    are run).  */  #define YYLEX           yylex()
   
 #ifndef YYLLOC_DEFAULT  
 # define YYLLOC_DEFAULT(Current, Rhs, N)                \  
    ((Current).first_line   = (Rhs)[1].first_line,       \  
     (Current).first_column = (Rhs)[1].first_column,     \  
     (Current).last_line    = (Rhs)[N].last_line,        \  
     (Current).last_column  = (Rhs)[N].last_column)  
 #endif #endif
  
 /* YYLEX -- calling `yylex' with the right arguments.  */  #ifdef YYPURE
   #ifdef YYLSP_NEEDED
 #ifdef YYLEX_PARAM #ifdef YYLEX_PARAM
 # define YYLEX yylex (YYLEX_PARAM)  #define YYLEX           yylex(&yylval, &yylloc, YYLEX_PARAM)
 #else #else
 # define YYLEX yylex ()  #define YYLEX           yylex(&yylval, &yylloc)
   #endif
   #else /* not YYLSP_NEEDED */
   #ifdef YYLEX_PARAM
   #define YYLEX           yylex(&yylval, YYLEX_PARAM)
   #else
   #define YYLEX           yylex(&yylval)
   #endif
   #endif /* not YYLSP_NEEDED */
 #endif #endif
  
 /* Enable debugging if requested.  */  /* If nonreentrant, generate the variables here */
 #if YYDEBUG  
  
 # ifndef YYFPRINTF  #ifndef YYPURE
 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */  
 #  define YYFPRINTF fprintf  
 # endif  
   
 # define YYDPRINTF(Args)                        \  
 do {                                            \  
   if (yydebug)                                  \  
     YYFPRINTF Args;                             \  
 } while (0)  
   
 # define YYDSYMPRINT(Args)                      \  
 do {                                            \  
   if (yydebug)                                  \  
     yysymprint Args;                            \  
 } while (0)  
   
 # define YYDSYMPRINTF(Title, Token, Value, Location)            \  
 do {                                                            \  
   if (yydebug)                                                  \  
     {                                                           \  
       YYFPRINTF (stderr, "%s ", Title);                         \  
       yysymprint (stderr,                                       \  
                   Token, Value);        \  
       YYFPRINTF (stderr, "\n");                                 \  
     }                                                           \  
 } while (0)  
  
 /*------------------------------------------------------------------.  int     yychar;                 /*  the lookahead symbol                */
 | yy_stack_print -- Print the state stack from its BOTTOM up to its |  YYSTYPE yylval;                 /*  the semantic value of the           */
 | TOP (included).                                                   |                                  /*  lookahead symbol                    */
 `------------------------------------------------------------------*/  
  
 #if defined (__STDC__) || defined (__cplusplus)  #ifdef YYLSP_NEEDED
 static void  YYLTYPE yylloc;                 /*  location data for the lookahead     */
 yy_stack_print (short *bottom, short *top)                                  /*  symbol                              */
 #else  
 static void  
 yy_stack_print (bottom, top)  
     short *bottom;  
     short *top;  
 #endif #endif
 {  
   YYFPRINTF (stderr, "Stack now");  
   for (/* Nothing. */; bottom <= top; ++bottom)  
     YYFPRINTF (stderr, " %d", *bottom);  
   YYFPRINTF (stderr, "\n");  
 }  
  
 # define YY_STACK_PRINT(Bottom, Top)                            \  int yynerrs;                    /*  number of parse errors so far       */
 do {                                                            \  #endif  /* not YYPURE */
   if (yydebug)                                                  \  
     yy_stack_print ((Bottom), (Top));                           \  
 } while (0)  
  
   #if YYDEBUG != 0
 /*------------------------------------------------.  int yydebug;                    /*  nonzero means print parse trace     */
 | Report that the YYRULE is going to be reduced.  |  /* Since this is uninitialized, it does not stop multiple parsers
 `------------------------------------------------*/     from coexisting.  */
   
 #if defined (__STDC__) || defined (__cplusplus)  
 static void  
 yy_reduce_print (int yyrule)  
 #else  
 static void  
 yy_reduce_print (yyrule)  
     int yyrule;  
 #endif #endif
 {  
   int yyi;  
   unsigned int yylno = yyrline[yyrule];  
   YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",  
              yyrule - 1, yylno);  
   /* Print the symbols being reduced, and their result.  */  
   for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)  
     YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);  
   YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);  
 }  
   
 # define YY_REDUCE_PRINT(Rule)          \  
 do {                                    \  
   if (yydebug)                          \  
     yy_reduce_print (Rule);             \  
 } while (0)  
   
 /* Nonzero means print parse trace.  It is left uninitialized so that  
    multiple parsers can coexist.  */  
 int yydebug;  
 #else /* !YYDEBUG */  
 # define YYDPRINTF(Args)  
 # define YYDSYMPRINT(Args)  
 # define YYDSYMPRINTF(Title, Token, Value, Location)  
 # define YY_STACK_PRINT(Bottom, Top)  
 # define YY_REDUCE_PRINT(Rule)  
 #endif /* !YYDEBUG */  
  
   /*  YYINITDEPTH indicates the initial size of the parser's stacks       */
  
 /* YYINITDEPTH -- initial size of the parser's stacks.  */  
 #ifndef YYINITDEPTH #ifndef YYINITDEPTH
 # define YYINITDEPTH 200 # define YYINITDEPTH 200
 #endif #endif
  
 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only  /*  YYMAXDEPTH is the maximum size the stacks can grow to
    if the built-in stack extension method is used).      (effective only if the built-in stack extension method is used).  */
   
    Do not make this value too large; the results are undefined if  
    SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)  
    evaluated with infinite-precision integer arithmetic.  */  
  
 #if defined (YYMAXDEPTH) && YYMAXDEPTH == 0  #if YYMAXDEPTH == 0
 # undef YYMAXDEPTH # undef YYMAXDEPTH
 #endif #endif
  
Line 705 
Line 417 
 # define YYMAXDEPTH 10000 # define YYMAXDEPTH 10000
 #endif #endif
  
   /* Define __yy_memcpy.  Note that the size argument
      should be passed with type unsigned int, because that is what the non-GCC
      definitions require.  With GCC, __builtin_memcpy takes an arg
      of type size_t, but it can handle unsigned int.  */
   
   #if __GNUC__ > 1                /* GNU C and GNU C++ define this.  */
   #define __yy_memcpy(TO,FROM,COUNT)      __builtin_memcpy(TO,FROM,COUNT)
   #else                           /* not GNU C or C++ */
   #ifndef __cplusplus
  
   /* This is the most reliable way to avoid incompatibilities
 #if YYERROR_VERBOSE     in available built-in functions on various systems.  */
   
 # ifndef yystrlen  
 #  if defined (__GLIBC__) && defined (_STRING_H)  
 #   define yystrlen strlen  
 #  else  
 /* Return the length of YYSTR.  */  
 static YYSIZE_T  
 #   if defined (__STDC__) || defined (__cplusplus)  
 yystrlen (const char *yystr)  
 #   else  
 yystrlen (yystr)  
      const char *yystr;  
 #   endif  
 {  
   register const char *yys = yystr;  
   
   while (*yys++ != '\0')  
     continue;  
   
   return yys - yystr - 1;  
 }  
 #  endif  
 # endif  
   
 # ifndef yystpcpy  
 #  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)  
 #   define yystpcpy stpcpy  
 #  else  
 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in  
    YYDEST.  */  
 static char *  
 #   if defined (__STDC__) || defined (__cplusplus)  
 yystpcpy (char *yydest, const char *yysrc)  
 #   else  
 yystpcpy (yydest, yysrc)  
      char *yydest;  
      const char *yysrc;  
 #   endif  
 {  
   register char *yyd = yydest;  
   register const char *yys = yysrc;  
   
   while ((*yyd++ = *yys++) != '\0')  
     continue;  
   
   return yyd - 1;  
 }  
 #  endif  
 # endif  
   
 #endif /* !YYERROR_VERBOSE */  
   
   
   
 #if YYDEBUG  
 /*--------------------------------.  
 | Print this symbol on YYOUTPUT.  |  
 `--------------------------------*/  
   
 #if defined (__STDC__) || defined (__cplusplus)  
 static void  
 yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)  
 #else  
 static void static void
 yysymprint (yyoutput, yytype, yyvaluep)  __yy_memcpy (to, from, count)
     FILE *yyoutput;       char *to;
     int yytype;       char *from;
     YYSTYPE *yyvaluep;       unsigned int count;
 #endif  
 { {
   /* Pacify ``unused variable'' warnings.  */    register char *f = from;
   (void) yyvaluep;    register char *t = to;
     register int i = count;
   if (yytype < YYNTOKENS)  
     {  
       YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);  
 # ifdef YYPRINT  
       YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);  
 # endif  
     }  
   else  
     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);  
  
   switch (yytype)    while (i-- > 0)
     {      *t++ = *f++;
       default:  
         break;  
     }  
   YYFPRINTF (yyoutput, ")");  
 } }
  
 #endif /* ! YYDEBUG */  #else /* __cplusplus */
 /*-----------------------------------------------.  
 | Release the memory associated to this symbol.  |  
 `-----------------------------------------------*/  
  
 #if defined (__STDC__) || defined (__cplusplus)  /* This is the most reliable way to avoid incompatibilities
 static void     in available built-in functions on various systems.  */
 yydestruct (int yytype, YYSTYPE *yyvaluep)  
 #else  
 static void static void
 yydestruct (yytype, yyvaluep)  __yy_memcpy (char *to, char *from, unsigned int count)
     int yytype;  
     YYSTYPE *yyvaluep;  
 #endif  
 { {
   /* Pacify ``unused variable'' warnings.  */    register char *t = to;
   (void) yyvaluep;    register char *f = from;
     register int i = count;
  
   switch (yytype)    while (i-- > 0)
     {      *t++ = *f++;
   
       default:  
         break;  
     }     }
 }  
   
  
 /* Prevent warnings from -Wmissing-prototypes.  */  
   
 #ifdef YYPARSE_PARAM  
 # if defined (__STDC__) || defined (__cplusplus)  
 int yyparse (void *YYPARSE_PARAM);  
 # else  
 int yyparse ();  
 # endif # endif
 #else /* ! YYPARSE_PARAM */  
 #if defined (__STDC__) || defined (__cplusplus)  
 int yyparse (void);  
 #else  
 int yyparse ();  
 #endif #endif
 #endif /* ! YYPARSE_PARAM */  
   
   
  
 /* The lookahead symbol.  */  #line 217 "bison.simple"
 int yychar;  
   
 /* The semantic value of the lookahead symbol.  */  
 YYSTYPE yylval;  
  
 /* Number of syntax errors so far.  */  /* The user can define YYPARSE_PARAM as the name of an argument to be passed
 int yynerrs;     into yyparse.  The argument should have type void *.
      It should actually point to an object.
      Grammar actions can access the variable by casting it
      to the proper pointer type.  */
  
   #ifdef YYPARSE_PARAM
   #ifdef __cplusplus
   #define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
   #define YYPARSE_PARAM_DECL
   #else /* not __cplusplus */
   #define YYPARSE_PARAM_ARG YYPARSE_PARAM
   #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
   #endif /* not __cplusplus */
   #else /* not YYPARSE_PARAM */
   #define YYPARSE_PARAM_ARG
   #define YYPARSE_PARAM_DECL
   #endif /* not YYPARSE_PARAM */
  
   /* Prevent warning if -Wstrict-prototypes.  */
 /*----------.  #ifdef __GNUC__
 | yyparse.  |  
 `----------*/  
   
 #ifdef YYPARSE_PARAM #ifdef YYPARSE_PARAM
 # if defined (__STDC__) || defined (__cplusplus)  int yyparse (void *);
 int yyparse (void *YYPARSE_PARAM)  
 # else  
 int yyparse (YYPARSE_PARAM)  
   void *YYPARSE_PARAM;  
 # endif  
 #else /* ! YYPARSE_PARAM */  
 #if defined (__STDC__) || defined (__cplusplus)  
 int  
 yyparse (void)  
 #else #else
 int  int yyparse (void);
 yyparse ()  
   
 #endif #endif
 #endif #endif
 {  
  
   int
   yyparse(YYPARSE_PARAM_ARG)
        YYPARSE_PARAM_DECL
   {
   register int yystate;   register int yystate;
   register int yyn;   register int yyn;
   int yyresult;  
   /* Number of tokens to shift before error messages enabled.  */  
   int yyerrstatus;  
   /* Lookahead token as an internal (translated) token number.  */  
   int yytoken = 0;  
   
   /* Three stacks and their tools:  
      `yyss': related to states,  
      `yyvs': related to semantic values,  
      `yyls': related to locations.  
   
      Refer to the stacks thru separate pointers, to allow yyoverflow  
      to reallocate them elsewhere.  */  
   
   /* The state stack.  */  
   short yyssa[YYINITDEPTH];  
   short *yyss = yyssa;  
   register short *yyssp;   register short *yyssp;
   
   /* The semantic value stack.  */  
   YYSTYPE yyvsa[YYINITDEPTH];  
   YYSTYPE *yyvs = yyvsa;  
   register YYSTYPE *yyvsp;   register YYSTYPE *yyvsp;
     int yyerrstatus;      /*  number of tokens to shift before error messages enabled */
     int yychar1 = 0;              /*  lookahead token as an internal (translated) token number */
  
     short yyssa[YYINITDEPTH];     /*  the state stack                     */
     YYSTYPE yyvsa[YYINITDEPTH];   /*  the semantic value stack            */
  
     short *yyss = yyssa;          /*  refer to the stacks thru separate pointers */
     YYSTYPE *yyvs = yyvsa;        /*  to allow yyoverflow to reallocate them elsewhere */
  
   #ifdef YYLSP_NEEDED
     YYLTYPE yylsa[YYINITDEPTH];   /*  the location stack                  */
     YYLTYPE *yyls = yylsa;
     YYLTYPE *yylsp;
   
   #define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
   #else
 #define YYPOPSTACK   (yyvsp--, yyssp--) #define YYPOPSTACK   (yyvsp--, yyssp--)
   #endif
  
   YYSIZE_T yystacksize = YYINITDEPTH;    int yystacksize = YYINITDEPTH;
     int yyfree_stacks = 0;
  
   /* The variables used to return semantic value and location from the  #ifdef YYPURE
      action routines.  */    int yychar;
   YYSTYPE yyval;    YYSTYPE yylval;
     int yynerrs;
   #ifdef YYLSP_NEEDED
     YYLTYPE yylloc;
   #endif
   #endif
  
     YYSTYPE yyval;                /*  the variable used to return         */
                                   /*  semantic values from the action     */
                                   /*  routines                            */
  
   /* When reducing, the number of symbols on the RHS of the reduced  
      rule.  */  
   int yylen;   int yylen;
  
   YYDPRINTF ((stderr, "Starting parse\n"));  #if YYDEBUG != 0
     if (yydebug)
       fprintf(stderr, "Starting parse\n");
   #endif
  
   yystate = 0;   yystate = 0;
   yyerrstatus = 0;   yyerrstatus = 0;
Line 931 
Line 551 
      so that they stay on the same level as the state stack.      so that they stay on the same level as the state stack.
      The wasted elements are never initialized.  */      The wasted elements are never initialized.  */
  
   yyssp = yyss;    yyssp = yyss - 1;
   yyvsp = yyvs;   yyvsp = yyvs;
   #ifdef YYLSP_NEEDED
     yylsp = yyls;
   #endif
  
   goto yysetstate;  /* Push a new state, which is found in  yystate  .  */
   
 /*------------------------------------------------------------.  
 | yynewstate -- Push a new state, which is found in yystate.  |  
 `------------------------------------------------------------*/  
  yynewstate:  
   /* In all cases, when you get here, the value and location stacks   /* In all cases, when you get here, the value and location stacks
      have just been pushed. so pushing a state here evens the stacks.     have just been pushed. so pushing a state here evens the stacks.  */
      */  yynewstate:
   yyssp++;  
  
  yysetstate:    *++yyssp = yystate;
   *yyssp = yystate;  
  
   if (yyss + yystacksize - 1 <= yyssp)    if (yyssp >= yyss + yystacksize - 1)
     {     {
       /* Get the current used size of the three stacks, in elements.  */        /* Give user a chance to reallocate the stack */
       YYSIZE_T yysize = yyssp - yyss + 1;        /* Use copies of these so that the &'s don't force the real ones into memory. */
   
 #ifdef yyoverflow  
       {  
         /* Give user a chance to reallocate the stack. Use copies of  
            these so that the &'s don't force the real ones into  
            memory.  */  
         YYSTYPE *yyvs1 = yyvs;         YYSTYPE *yyvs1 = yyvs;
         short *yyss1 = yyss;         short *yyss1 = yyss;
   #ifdef YYLSP_NEEDED
         YYLTYPE *yyls1 = yyls;
   #endif
  
         /* Get the current used size of the three stacks, in elements.  */
         int size = yyssp - yyss + 1;
  
         /* Each stack pointer address is followed by the size of the  #ifdef yyoverflow
            data in use in that stack, in bytes.  This used to be a        /* Each stack pointer address is followed by the size of
            conditional around just the two extra args, but that might           the data in use in that stack, in bytes.  */
            be undefined if yyoverflow is a macro.  */  #ifdef YYLSP_NEEDED
         /* This used to be a conditional around just the two extra args,
            but that might be undefined if yyoverflow is a macro.  */
         yyoverflow ("parser stack overflow",         yyoverflow ("parser stack overflow",
                     &yyss1, yysize * sizeof (*yyssp),                   &yyss1, size * sizeof (*yyssp),
                     &yyvs1, yysize * sizeof (*yyvsp),                   &yyvs1, size * sizeof (*yyvsp),
                    &yyls1, size * sizeof (*yylsp),
                    &yystacksize);
   #else
         yyoverflow("parser stack overflow",
                    &yyss1, size * sizeof (*yyssp),
                    &yyvs1, size * sizeof (*yyvsp),
                     &yystacksize);                     &yystacksize);
   #endif
  
         yyss = yyss1;        yyss = yyss1; yyvs = yyvs1;
         yyvs = yyvs1;  #ifdef YYLSP_NEEDED
       }        yyls = yyls1;
   #endif
 #else /* no yyoverflow */ #else /* no yyoverflow */
 # ifndef YYSTACK_RELOCATE  
       goto yyoverflowlab;  
 # else  
       /* Extend the stack our own way.  */       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)        if (yystacksize >= YYMAXDEPTH)
         goto yyoverflowlab;  
       yystacksize *= 2;  
       if (YYMAXDEPTH < yystacksize)  
         yystacksize = YYMAXDEPTH;  
   
       {       {
         short *yyss1 = yyss;            yyerror("parser stack overflow");
         union yyalloc *yyptr =            if (yyfree_stacks)
           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));              {
         if (! yyptr)                free (yyss);
           goto yyoverflowlab;                free (yyvs);
         YYSTACK_RELOCATE (yyss);  #ifdef YYLSP_NEEDED
         YYSTACK_RELOCATE (yyvs);                free (yyls);
   #endif
 #  undef YYSTACK_RELOCATE              }
         if (yyss1 != yyssa)            return 2;
           YYSTACK_FREE (yyss1);  
       }       }
         yystacksize *= 2;
         if (yystacksize > YYMAXDEPTH)
           yystacksize = YYMAXDEPTH;
   #ifndef YYSTACK_USE_ALLOCA
         yyfree_stacks = 1;
   #endif
         yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
         __yy_memcpy ((char *)yyss, (char *)yyss1,
                      size * (unsigned int) sizeof (*yyssp));
         yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
         __yy_memcpy ((char *)yyvs, (char *)yyvs1,
                      size * (unsigned int) sizeof (*yyvsp));
   #ifdef YYLSP_NEEDED
         yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
         __yy_memcpy ((char *)yyls, (char *)yyls1,
                      size * (unsigned int) sizeof (*yylsp));
 # endif # endif
 #endif /* no yyoverflow */ #endif /* no yyoverflow */
  
       yyssp = yyss + yysize - 1;        yyssp = yyss + size - 1;
       yyvsp = yyvs + yysize - 1;        yyvsp = yyvs + size - 1;
   #ifdef YYLSP_NEEDED
         yylsp = yyls + size - 1;
   #endif
  
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",  #if YYDEBUG != 0
                   (unsigned long int) yystacksize));        if (yydebug)
           fprintf(stderr, "Stack size increased to %d\n", yystacksize);
   #endif
  
       if (yyss + yystacksize - 1 <= yyssp)        if (yyssp >= yyss + yystacksize - 1)
         YYABORT;         YYABORT;
     }     }
  
   YYDPRINTF ((stderr, "Entering state %d\n", yystate));  #if YYDEBUG != 0
     if (yydebug)
       fprintf(stderr, "Entering state %d\n", yystate);
   #endif
  
   goto yybackup;   goto yybackup;
   
 /*-----------.  
 | yybackup.  |  
 `-----------*/  
 yybackup: yybackup:
  
 /* Do appropriate processing given the current state.  */ /* Do appropriate processing given the current state.  */
Line 1029 
Line 663 
   /* First try to decide what to do without reference to lookahead token.  */   /* First try to decide what to do without reference to lookahead token.  */
  
   yyn = yypact[yystate];   yyn = yypact[yystate];
   if (yyn == YYPACT_NINF)    if (yyn == YYFLAG)
     goto yydefault;     goto yydefault;
  
   /* Not known => get a lookahead token if don't already have one.  */   /* Not known => get a lookahead token if don't already have one.  */
  
   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */    /* yychar is either YYEMPTY or YYEOF
        or a valid token in external form.  */
   
   if (yychar == YYEMPTY)   if (yychar == YYEMPTY)
     {     {
       YYDPRINTF ((stderr, "Reading a token: "));  #if YYDEBUG != 0
         if (yydebug)
           fprintf(stderr, "Reading a token: ");
   #endif
       yychar = YYLEX;       yychar = YYLEX;
     }     }
  
   if (yychar <= YYEOF)    /* Convert token to internal form (in yychar1) for indexing tables with */
   
     if (yychar <= 0)              /* This means end of input. */
     {     {
       yychar = yytoken = YYEOF;        yychar1 = 0;
       YYDPRINTF ((stderr, "Now at end of input.\n"));        yychar = YYEOF;           /* Don't call YYLEX any more */
   
   #if YYDEBUG != 0
         if (yydebug)
           fprintf(stderr, "Now at end of input.\n");
   #endif
     }     }
   else   else
     {     {
       yytoken = YYTRANSLATE (yychar);        yychar1 = YYTRANSLATE(yychar);
       YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);  
   #if YYDEBUG != 0
         if (yydebug)
           {
             fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
             /* Give the individual parser a way to print the precise meaning
                of a token, for further debugging info.  */
   #ifdef YYPRINT
             YYPRINT (stderr, yychar, yylval);
   #endif
             fprintf (stderr, ")\n");
           }
   #endif
     }     }
  
   /* If the proper action on seeing token YYTOKEN is to reduce or to    yyn += yychar1;
      detect an error, take that action.  */    if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
   yyn += yytoken;  
   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)  
     goto yydefault;     goto yydefault;
   
   yyn = yytable[yyn];   yyn = yytable[yyn];
   if (yyn <= 0)  
     /* yyn is what to do for this token type in this state.
        Negative => reduce, -yyn is rule number.
        Positive => shift, yyn is new state.
          New state is final state => don't bother to shift,
          just return success.
        0, or most negative number => error.  */
   
     if (yyn < 0)
     {     {
       if (yyn == 0 || yyn == YYTABLE_NINF)        if (yyn == YYFLAG)
         goto yyerrlab;         goto yyerrlab;
       yyn = -yyn;       yyn = -yyn;
       goto yyreduce;       goto yyreduce;
     }     }
     else if (yyn == 0)
       goto yyerrlab;
  
   if (yyn == YYFINAL)   if (yyn == YYFINAL)
     YYACCEPT;     YYACCEPT;
  
   /* Shift the lookahead token.  */   /* Shift the lookahead token.  */
   YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));  
   #if YYDEBUG != 0
     if (yydebug)
       fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
   #endif
  
   /* Discard the token being shifted unless it is eof.  */   /* Discard the token being shifted unless it is eof.  */
   if (yychar != YYEOF)   if (yychar != YYEOF)
     yychar = YYEMPTY;     yychar = YYEMPTY;
  
   *++yyvsp = yylval;   *++yyvsp = yylval;
   #ifdef YYLSP_NEEDED
     *++yylsp = yylloc;
   #endif
  
     /* count tokens shifted since error; after three, turn off error status.  */
   /* Count tokens shifted since error; after three, turn off error    if (yyerrstatus) yyerrstatus--;
      status.  */  
   if (yyerrstatus)  
     yyerrstatus--;  
  
   yystate = yyn;   yystate = yyn;
   goto yynewstate;   goto yynewstate;
  
   /* Do the default action for the current state.  */
 /*-----------------------------------------------------------.  
 | yydefault -- do the default action for the current state.  |  
 `-----------------------------------------------------------*/  
 yydefault: yydefault:
   
   yyn = yydefact[yystate];   yyn = yydefact[yystate];
   if (yyn == 0)   if (yyn == 0)
     goto yyerrlab;     goto yyerrlab;
   goto yyreduce;  
  
   /* Do a reduction.  yyn is the number of a rule to reduce with.  */
 /*-----------------------------.  
 | yyreduce -- Do a reduction.  |  
 `-----------------------------*/  
 yyreduce: yyreduce:
   /* yyn is the number of a rule to reduce with.  */  
   yylen = yyr2[yyn];   yylen = yyr2[yyn];
     if (yylen > 0)
       yyval = yyvsp[1-yylen]; /* implement default value of the action */
   
   #if YYDEBUG != 0
     if (yydebug)
       {
         int i;
   
         fprintf (stderr, "Reducing via rule %d (line %d), ",
                  yyn, yyrline[yyn]);
  
   /* If YYLEN is nonzero, implement the default value of the action:        /* Print the symbols being reduced, and their result.  */
      `$$ = $1'.        for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
           fprintf (stderr, "%s ", yytname[yyrhs[i]]);
         fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
       }
   #endif
  
      Otherwise, the following line sets YYVAL to garbage.  
      This behavior is undocumented and Bison  
      users should not rely upon it.  Assigning to YYVAL  
      unconditionally makes the parser a bit smaller, and it avoids a  
      GCC warning that YYVAL may be used uninitialized.  */  
   yyval = yyvsp[1-yylen];  
  
     switch (yyn) {
  
   YY_REDUCE_PRINT (yyn);  case 1:
   switch (yyn)  #line 161 "wql.y"
     {     {
           WQL_TRACE(("YACC: start\n"));
       ;
       break;}
         case 2:         case 2:
 #line 160 "WQL.y"  #line 167 "wql.y"
     {     {
         WQL_TRACE(("YACC: start\n"));  
     ;}  
     break;  
  
       ;
       break;}
   case 3:   case 3:
 #line 166 "WQL.y"  #line 173 "wql.y"
     {     {
           globalParserState->statement->setAllProperties(true);
     ;}      ;
     break;      break;}
   
   case 4:   case 4:
 #line 172 "WQL.y"  #line 177 "wql.y"
     {     {
         globalParserState->statement->setAllProperties(true);  
     ;}  
     break;  
  
       ;
       break;}
   case 5:   case 5:
 #line 176 "WQL.y"  #line 183 "wql.y"
     {     {
           globalParserState->statement->appendSelectPropertyName(CIMName(yyvsp[0].strValue));
     ;}      ;
     break;      break;}
   
   case 6:   case 6:
 #line 182 "WQL.y"  #line 187 "wql.y"
     {     {
         globalParserState->statement->appendSelectPropertyName(CIMName(yyvsp[0].strValue));         globalParserState->statement->appendSelectPropertyName(CIMName(yyvsp[0].strValue));
     ;}      ;
     break;      break;}
   
   case 7:   case 7:
 #line 186 "WQL.y"  #line 193 "wql.y"
     {     {
         globalParserState->statement->appendSelectPropertyName(CIMName(yyvsp[0].strValue));  
     ;}  
     break;  
  
       ;
       break;}
   case 8:   case 8:
 #line 192 "WQL.y"  #line 197 "wql.y"
     {     {
  
     ;}      ;
     break;      break;}
   
   case 9:   case 9:
 #line 196 "WQL.y"  #line 203 "wql.y"
     {  
   
     ;}  
     break;  
   
   case 10:  
 #line 202 "WQL.y"  
     {     {
         WQL_TRACE(("YACC: fromClause: TOK_FROM className(%s)\n", yyvsp[0].strValue));         WQL_TRACE(("YACC: fromClause: TOK_FROM className(%s)\n", yyvsp[0].strValue));
         globalParserState->statement->setClassName(CIMName(yyvsp[0].strValue));         globalParserState->statement->setClassName(CIMName(yyvsp[0].strValue));
     ;}      ;
     break;      break;}
   case 10:
   case 11:  #line 210 "wql.y"
 #line 209 "WQL.y"  
     {     {
  
     ;}      ;
     break;      break;}
   case 11:
   case 12:  #line 216 "wql.y"
 #line 215 "WQL.y"  
     {     {
         WQL_TRACE(("YACC: TOK_OR\n"));         WQL_TRACE(("YACC: TOK_OR\n"));
         globalParserState->statement->appendOperation(WQL_OR);         globalParserState->statement->appendOperation(WQL_OR);
     ;}      ;
     break;      break;}
   case 12:
   case 13:  #line 221 "wql.y"
 #line 220 "WQL.y"  
     {     {
         WQL_TRACE(("YACC: TOK_AND\n"));         WQL_TRACE(("YACC: TOK_AND\n"));
         globalParserState->statement->appendOperation(WQL_AND);         globalParserState->statement->appendOperation(WQL_AND);
     ;}      ;
     break;      break;}
   case 13:
   case 14:  #line 226 "wql.y"
 #line 225 "WQL.y"  
     {     {
         WQL_TRACE(("YACC: TOK_NOT\n"));         WQL_TRACE(("YACC: TOK_NOT\n"));
  
         globalParserState->statement->appendOperation(WQL_NOT);         globalParserState->statement->appendOperation(WQL_NOT);
     ;}      ;
     break;      break;}
   case 14:
   #line 232 "wql.y"
   {
  
       ;
       break;}
   case 15:   case 15:
 #line 231 "WQL.y"  #line 236 "wql.y"
     {     {
  
     ;}      ;
     break;      break;}
   
   case 16:   case 16:
 #line 235 "WQL.y"  #line 240 "wql.y"
     {  
   
     ;}  
     break;  
   
   case 17:  
 #line 239 "WQL.y"  
     {     {
         WQLOperation op = yyvsp[0].intValue ? WQL_IS_TRUE : WQL_IS_FALSE;         WQLOperation op = yyvsp[0].intValue ? WQL_IS_TRUE : WQL_IS_FALSE;
         globalParserState->statement->appendOperation(op);         globalParserState->statement->appendOperation(op);
     ;}      ;
     break;      break;}
   case 17:
   case 18:  #line 245 "wql.y"
 #line 244 "WQL.y"  
     {     {
         WQLOperation op = yyvsp[0].intValue ? WQL_IS_NOT_TRUE : WQL_IS_NOT_FALSE;         WQLOperation op = yyvsp[0].intValue ? WQL_IS_NOT_TRUE : WQL_IS_NOT_FALSE;
         globalParserState->statement->appendOperation(op);         globalParserState->statement->appendOperation(op);
     ;}      ;
     break;      break;}
   case 18:
   #line 254 "wql.y"
   {
  
       ;
       break;}
   case 19:   case 19:
 #line 253 "WQL.y"  #line 258 "wql.y"
     {     {
  
     ;}      ;
     break;      break;}
   
   case 20:   case 20:
 #line 257 "WQL.y"  #line 264 "wql.y"
     {  
   
     ;}  
     break;  
   
   case 21:  
 #line 263 "WQL.y"  
     {     {
         WQL_TRACE(("YACC: TOK_LT\n"));         WQL_TRACE(("YACC: TOK_LT\n"));
         globalParserState->statement->appendOperation(WQL_LT);         globalParserState->statement->appendOperation(WQL_LT);
     ;}      ;
     break;      break;}
   case 21:
   case 22:  #line 269 "wql.y"
 #line 268 "WQL.y"  
     {     {
         WQL_TRACE(("YACC: TOK_GT\n"));         WQL_TRACE(("YACC: TOK_GT\n"));
         globalParserState->statement->appendOperation(WQL_GT);         globalParserState->statement->appendOperation(WQL_GT);
     ;}      ;
     break;      break;}
   case 22:
   case 23:  #line 274 "wql.y"
 #line 273 "WQL.y"  
     {     {
         WQL_TRACE(("YACC: TOK_LE\n"));         WQL_TRACE(("YACC: TOK_LE\n"));
         globalParserState->statement->appendOperation(WQL_LE);         globalParserState->statement->appendOperation(WQL_LE);
     ;}      ;
     break;      break;}
   case 23:
   case 24:  #line 279 "wql.y"
 #line 278 "WQL.y"  
     {     {
         WQL_TRACE(("YACC: TOK_GE\n"));         WQL_TRACE(("YACC: TOK_GE\n"));
         globalParserState->statement->appendOperation(WQL_GE);         globalParserState->statement->appendOperation(WQL_GE);
     ;}      ;
     break;      break;}
   case 24:
   case 25:  #line 284 "wql.y"
 #line 283 "WQL.y"  
     {     {
         WQL_TRACE(("YACC: TOK_EQ\n"));         WQL_TRACE(("YACC: TOK_EQ\n"));
         globalParserState->statement->appendOperation(WQL_EQ);         globalParserState->statement->appendOperation(WQL_EQ);
     ;}      ;
     break;      break;}
   case 25:
   case 26:  #line 289 "wql.y"
 #line 288 "WQL.y"  
     {     {
         WQL_TRACE(("YACC: TOK_NE\n"));         WQL_TRACE(("YACC: TOK_NE\n"));
         globalParserState->statement->appendOperation(WQL_NE);         globalParserState->statement->appendOperation(WQL_NE);
     ;}      ;
     break;      break;}
   case 26:
   case 27:  #line 294 "wql.y"
 #line 293 "WQL.y"  
     {     {
     WQL_TRACE(("YACC: TOK_ISA\n"));     WQL_TRACE(("YACC: TOK_ISA\n"));
     #ifndef PEGASUS_SNIA_EXTENSIONS     #ifndef PEGASUS_SNIA_EXTENSIONS
           // If SNIA tests, allow the ISA but do not pass className
         yyerror("ISA Token Not Supported");         yyerror("ISA Token Not Supported");
     #endif     #endif
     ;}      ;
     break;      break;}
   case 27:
   case 28:  #line 304 "wql.y"
 #line 302 "WQL.y"  
     {     {
         WQL_TRACE(("YACC: nullPredicate : comparisonTerm IS NULL\n"));         WQL_TRACE(("YACC: nullPredicate : comparisonTerm IS NULL\n"));
         globalParserState->statement->appendOperation(WQL_IS_NULL);         globalParserState->statement->appendOperation(WQL_IS_NULL);
     ;}      ;
     break;      break;}
   case 28:
   case 29:  #line 309 "wql.y"
 #line 307 "WQL.y"  
     {     {
         WQL_TRACE(("YACC: nullPredicate : comparisonTerm IS NOT NULL\n"));         WQL_TRACE(("YACC: nullPredicate : comparisonTerm IS NOT NULL\n"));
         globalParserState->statement->appendOperation(WQL_IS_NOT_NULL);         globalParserState->statement->appendOperation(WQL_IS_NOT_NULL);
     ;}      ;
     break;      break;}
   case 29:
   case 30:  #line 316 "wql.y"
 #line 314 "WQL.y"  
     {     {
         yyval.intValue = 1;         yyval.intValue = 1;
     ;}      ;
     break;      break;}
   case 30:
   case 31:  #line 320 "wql.y"
 #line 318 "WQL.y"  
     {     {
         yyval.intValue = 0;         yyval.intValue = 0;
     ;}      ;
     break;      break;}
   case 31:
   case 32:  #line 333 "wql.y"
 #line 324 "WQL.y"  
     {     {
         WQL_TRACE(("YACC: propertyName : TOK_IDENTIFIER(%s)\n", yyvsp[0].strValue));         WQL_TRACE(("YACC: propertyName : TOK_IDENTIFIER(%s)\n", yyvsp[0].strValue));
         yyval.strValue = yyvsp[0].strValue;         yyval.strValue = yyvsp[0].strValue;
     ;}      ;
     break;      break;}
   case 32:
   #line 338 "wql.y"
   {
           WQL_TRACE(("YACC: propertyName : TOK_IDENTIFIER(%s.%s)\n", yyvsp[-2].strValue, yyvsp[0].strValue));
   #ifdef PEGASUS_SNIA_EXTENSIONS
           // Pass anything as a property name to fool parser for SNIA testing
           yyval.strValue = strdup("dummy");
   #else
           yyerror("Scoped (dotted) property names not supported");
   #endif
       ;
       break;}
   case 33:   case 33:
 #line 330 "WQL.y"  #line 350 "wql.y"
     {     {
         WQL_TRACE(("YACC: TOK_IDENTIFIER %s\n", yyvsp[0].strValue));         WQL_TRACE(("YACC: TOK_IDENTIFIER %s\n", yyvsp[0].strValue));
         yyval.strValue = yyvsp[0].strValue;         yyval.strValue = yyvsp[0].strValue;
     ;}      ;
     break;      break;}
   
   case 34:   case 34:
 #line 337 "WQL.y"  #line 357 "wql.y"
     {     {
         globalParserState->statement->appendOperand(         globalParserState->statement->appendOperand(
             WQLOperand(yyvsp[0].strValue, WQL_PROPERTY_NAME_TAG));             WQLOperand(yyvsp[0].strValue, WQL_PROPERTY_NAME_TAG));
         globalParserState->statement->appendWherePropertyName(CIMName(yyvsp[0].strValue));         globalParserState->statement->appendWherePropertyName(CIMName(yyvsp[0].strValue));
     ;}      ;
     break;      break;}
   
   case 35:   case 35:
 #line 343 "WQL.y"  #line 363 "wql.y"
     {     {
         globalParserState->statement->appendOperand(         globalParserState->statement->appendOperand(
             WQLOperand(yyvsp[0].intValue, WQL_INTEGER_VALUE_TAG));             WQLOperand(yyvsp[0].intValue, WQL_INTEGER_VALUE_TAG));
     ;}      ;
     break;      break;}
   
   case 36:   case 36:
 #line 348 "WQL.y"  #line 368 "wql.y"
     {     {
         globalParserState->statement->appendOperand(         globalParserState->statement->appendOperand(
             WQLOperand(yyvsp[0].doubleValue, WQL_DOUBLE_VALUE_TAG));             WQLOperand(yyvsp[0].doubleValue, WQL_DOUBLE_VALUE_TAG));
     ;}      ;
     break;      break;}
   
   case 37:   case 37:
 #line 353 "WQL.y"  #line 373 "wql.y"
     {     {
         globalParserState->statement->appendOperand(         globalParserState->statement->appendOperand(
             WQLOperand(yyvsp[0].strValue, WQL_STRING_VALUE_TAG));             WQLOperand(yyvsp[0].strValue, WQL_STRING_VALUE_TAG));
     ;}      ;
     break;      break;}
   
   case 38:   case 38:
 #line 358 "WQL.y"  #line 378 "wql.y"
     {     {
         globalParserState->statement->appendOperand(         globalParserState->statement->appendOperand(
             WQLOperand(yyvsp[0].intValue != 0, WQL_BOOLEAN_VALUE_TAG));             WQLOperand(yyvsp[0].intValue != 0, WQL_BOOLEAN_VALUE_TAG));
     ;}      ;
     break;      break;}
   
   
     }     }
      /* the action file gets copied in in place of this dollarsign */
 /* Line 1000 of yacc.c.  */  #line 543 "bison.simple"
 #line 1412 "WQLtemp"  
  
   yyvsp -= yylen;   yyvsp -= yylen;
   yyssp -= yylen;   yyssp -= yylen;
   #ifdef YYLSP_NEEDED
     yylsp -= yylen;
   #endif
  
   #if YYDEBUG != 0
   YY_STACK_PRINT (yyss, yyssp);    if (yydebug)
       {
         short *ssp1 = yyss - 1;
         fprintf (stderr, "state stack now");
         while (ssp1 != yyssp)
           fprintf (stderr, " %d", *++ssp1);
         fprintf (stderr, "\n");
       }
   #endif
  
   *++yyvsp = yyval;   *++yyvsp = yyval;
  
   #ifdef YYLSP_NEEDED
     yylsp++;
     if (yylen == 0)
       {
         yylsp->first_line = yylloc.first_line;
         yylsp->first_column = yylloc.first_column;
         yylsp->last_line = (yylsp-1)->last_line;
         yylsp->last_column = (yylsp-1)->last_column;
         yylsp->text = 0;
       }
     else
       {
         yylsp->last_line = (yylsp+yylen-1)->last_line;
         yylsp->last_column = (yylsp+yylen-1)->last_column;
       }
   #endif
  
   /* Now `shift' the result of the reduction.  Determine what state    /* Now "shift" the result of the reduction.
      that goes to, based on the state we popped back to and the rule       Determine what state that goes to,
      number reduced by.  */       based on the state we popped back to
        and the rule number reduced by.  */
  
   yyn = yyr1[yyn];   yyn = yyr1[yyn];
  
   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;    yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)    if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
     yystate = yytable[yystate];     yystate = yytable[yystate];
   else   else
     yystate = yydefgoto[yyn - YYNTOKENS];      yystate = yydefgoto[yyn - YYNTBASE];
  
   goto yynewstate;   goto yynewstate;
  
   yyerrlab:   /* here on detecting error */
  
 /*------------------------------------.  
 | yyerrlab -- here on detecting error |  
 `------------------------------------*/  
 yyerrlab:  
   /* If not already recovering from an error, report this error.  */  
   if (!yyerrstatus)   if (!yyerrstatus)
       /* If not already recovering from an error, report this error.  */
     {     {
       ++yynerrs;       ++yynerrs;
 #if YYERROR_VERBOSE  
       yyn = yypact[yystate];  
  
       if (YYPACT_NINF < yyn && yyn < YYLAST)  #ifdef YYERROR_VERBOSE
         {        yyn = yypact[yystate];
           YYSIZE_T yysize = 0;  
           int yytype = YYTRANSLATE (yychar);  
           const char* yyprefix;  
           char *yymsg;  
           int yyx;  
   
           /* Start YYX at -YYN if negative to avoid negative indexes in  
              YYCHECK.  */  
           int yyxbegin = yyn < 0 ? -yyn : 0;  
   
           /* Stay within bounds of both yycheck and yytname.  */  
           int yychecklim = YYLAST - yyn;  
           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;  
           int yycount = 0;  
   
           yyprefix = ", expecting ";  
           for (yyx = yyxbegin; yyx < yyxend; ++yyx)  
             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)  
               {  
                 yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);  
                 yycount += 1;  
                 if (yycount == 5)  
                   {  
                     yysize = 0;  
                     break;  
                   }  
               }  
           yysize += (sizeof ("syntax error, unexpected ")  
                      + yystrlen (yytname[yytype]));  
           yymsg = (char *) YYSTACK_ALLOC (yysize);  
           if (yymsg != 0)  
             {  
               char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");  
               yyp = yystpcpy (yyp, yytname[yytype]);  
  
               if (yycount < 5)        if (yyn > YYFLAG && yyn < YYLAST)
                 {                 {
                   yyprefix = ", expecting ";            int size = 0;
                   for (yyx = yyxbegin; yyx < yyxend; ++yyx)            char *msg;
                     if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)            int x, count;
                       {  
                         yyp = yystpcpy (yyp, yyprefix);            count = 0;
                         yyp = yystpcpy (yyp, yytname[yyx]);            /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
                         yyprefix = " or ";            for (x = (yyn < 0 ? -yyn : 0);
                  x < (sizeof(yytname) / sizeof(char *)); x++)
               if (yycheck[x + yyn] == x)
                 size += strlen(yytname[x]) + 15, count++;
             msg = (char *) malloc(size + 15);
             if (msg != 0)
               {
                 strcpy(msg, "parse error");
   
                 if (count < 5)
                   {
                     count = 0;
                     for (x = (yyn < 0 ? -yyn : 0);
                          x < (sizeof(yytname) / sizeof(char *)); x++)
                       if (yycheck[x + yyn] == x)
                         {
                           strcat(msg, count == 0 ? ", expecting `" : " or `");
                           strcat(msg, yytname[x]);
                           strcat(msg, "'");
                           count++;
                       }                       }
                 }                 }
               yyerror (yymsg);                yyerror(msg);
               YYSTACK_FREE (yymsg);                free(msg);
             }             }
           else           else
             yyerror ("syntax error; also virtual memory exhausted");              yyerror ("parse error; also virtual memory exceeded");
         }         }
       else       else
 #endif /* YYERROR_VERBOSE */ #endif /* YYERROR_VERBOSE */
         yyerror ("syntax error");          yyerror("parse error");
     }     }
  
     goto yyerrlab1;
   yyerrlab1:   /* here on error raised explicitly by an action */
  
   if (yyerrstatus == 3)   if (yyerrstatus == 3)
     {     {
       /* If just tried and failed to reuse lookahead token after an        /* if just tried and failed to reuse lookahead token after an error, discard it.  */
          error, discard it.  */  
  
       if (yychar <= YYEOF)        /* return failure if at end of input */
         {  
           /* If at end of input, pop the error token,  
              then the rest of the stack, then return failure.  */  
           if (yychar == YYEOF)           if (yychar == YYEOF)
              for (;;)  
                {  
                  YYPOPSTACK;  
                  if (yyssp == yyss)  
                    YYABORT;                    YYABORT;
                  YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);  
                  yydestruct (yystos[*yyssp], yyvsp);  
                }  
         }  
       else  
         {  
           YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);  
           yydestruct (yytoken, &yylval);  
           yychar = YYEMPTY;  
  
         }  #if YYDEBUG != 0
         if (yydebug)
           fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
   #endif
   
         yychar = YYEMPTY;
     }     }
  
   /* Else will try to reuse lookahead token after shifting the error    /* Else will try to reuse lookahead token
      token.  */       after shifting the error token.  */
   goto yyerrlab1;  
  
     yyerrstatus = 3;              /* Each real token shifted decrements this */
  
 /*---------------------------------------------------.    goto yyerrhandle;
 | yyerrorlab -- error raised explicitly by YYERROR.  |  
 `---------------------------------------------------*/  
 yyerrorlab:  
  
 #ifdef __GNUC__  yyerrdefault:  /* current state does not do anything special for the error token. */
   /* Pacify GCC when the user code never invokes YYERROR and the label  
      yyerrorlab therefore never appears in user code.  */  
   if (0)  
      goto yyerrorlab;  
 #endif  
  
   yyvsp -= yylen;  #if 0
   yyssp -= yylen;    /* This is wrong; only states that explicitly want error tokens
   yystate = *yyssp;       should shift them.  */
   goto yyerrlab1;    yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
     if (yyn) goto yydefault;
   #endif
  
   yyerrpop:   /* pop the current state because it cannot handle the error token */
  
 /*-------------------------------------------------------------.    if (yyssp == yyss) YYABORT;
 | yyerrlab1 -- common code for both syntax error and YYERROR.  |    yyvsp--;
 `-------------------------------------------------------------*/    yystate = *--yyssp;
 yyerrlab1:  #ifdef YYLSP_NEEDED
   yyerrstatus = 3;      /* Each real token shifted decrements this.  */    yylsp--;
   #endif
  
   for (;;)  #if YYDEBUG != 0
     if (yydebug)
     {     {
       yyn = yypact[yystate];        short *ssp1 = yyss - 1;
       if (yyn != YYPACT_NINF)        fprintf (stderr, "Error: state stack now");
         {        while (ssp1 != yyssp)
           yyn += YYTERROR;          fprintf (stderr, " %d", *++ssp1);
           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)        fprintf (stderr, "\n");
             {  
               yyn = yytable[yyn];  
               if (0 < yyn)  
                 break;  
             }  
         }         }
   #endif
  
       /* Pop the current state because it cannot handle the error token.  */  yyerrhandle:
       if (yyssp == yyss)  
         YYABORT;    yyn = yypact[yystate];
     if (yyn == YYFLAG)
       goto yyerrdefault;
  
       YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);    yyn += YYTERROR;
       yydestruct (yystos[yystate], yyvsp);    if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
       YYPOPSTACK;      goto yyerrdefault;
       yystate = *yyssp;  
       YY_STACK_PRINT (yyss, yyssp);    yyn = yytable[yyn];
     if (yyn < 0)
       {
         if (yyn == YYFLAG)
           goto yyerrpop;
         yyn = -yyn;
         goto yyreduce;
     }     }
     else if (yyn == 0)
       goto yyerrpop;
  
   if (yyn == YYFINAL)   if (yyn == YYFINAL)
     YYACCEPT;     YYACCEPT;
  
   YYDPRINTF ((stderr, "Shifting error token, "));  #if YYDEBUG != 0
     if (yydebug)
       fprintf(stderr, "Shifting error token, ");
   #endif
  
   *++yyvsp = yylval;   *++yyvsp = yylval;
   #ifdef YYLSP_NEEDED
     *++yylsp = yylloc;
   #endif
  
   yystate = yyn;   yystate = yyn;
   goto yynewstate;   goto yynewstate;
  
   
 /*-------------------------------------.  
 | yyacceptlab -- YYACCEPT comes here.  |  
 `-------------------------------------*/  
 yyacceptlab: yyacceptlab:
   yyresult = 0;    /* YYACCEPT comes here.  */
   goto yyreturn;    if (yyfree_stacks)
       {
 /*-----------------------------------.        free (yyss);
 | yyabortlab -- YYABORT comes here.  |        free (yyvs);
 `-----------------------------------*/  #ifdef YYLSP_NEEDED
 yyabortlab:        free (yyls);
   yyresult = 1;  
   goto yyreturn;  
   
 #ifndef yyoverflow  
 /*----------------------------------------------.  
 | yyoverflowlab -- parser overflow comes here.  |  
 `----------------------------------------------*/  
 yyoverflowlab:  
   yyerror ("parser stack overflow");  
   yyresult = 2;  
   /* Fall through.  */  
 #endif #endif
       }
     return 0;
  
 yyreturn:   yyabortlab:
 #ifndef yyoverflow    /* YYABORT comes here.  */
   if (yyss != yyssa)    if (yyfree_stacks)
     YYSTACK_FREE (yyss);      {
         free (yyss);
         free (yyvs);
   #ifdef YYLSP_NEEDED
         free (yyls);
 #endif #endif
   return yyresult;  
 } }
     return 1;
   }
 #line 363 "WQL.y"  #line 383 "wql.y"
   
  


Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2