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

  1 karl  1.6.2.2 #ifndef lint
  2               static char const 
  3               yyrcsid[] = "$FreeBSD: src/usr.bin/yacc/skeleton.c,v 1.28 2000/01/17 02:04:06 bde Exp $";
  4               #endif
  5               #include <stdlib.h>
  6               #define YYBYACC 1
  7               #define YYMAJOR 1
  8               #define YYMINOR 9
  9               #define YYLEX yylex()
 10               #define YYEMPTY -1
 11               #define yyclearin (yychar=(YYEMPTY))
 12               #define yyerrok (yyerrflag=0)
 13               #define YYRECOVERING() (yyerrflag!=0)
 14               static int yygrowstack();
 15 mike  1.2     #define yyparse WQL_parse
 16               #define yylex WQL_lex
 17               #define yyerror WQL_error
 18               #define yychar WQL_char
 19 karl  1.6.2.2 #define yyval WQL_val
 20               #define yylval WQL_lval
 21 mike  1.2     #define yydebug WQL_debug
 22               #define yynerrs WQL_nerrs
 23 karl  1.6.2.2 #define yyerrflag WQL_errflag
 24               #define yyss WQL_ss
 25               #define yyssp WQL_ssp
 26               #define yyvs WQL_vs
 27               #define yyvsp WQL_vsp
 28               #define yylhs WQL_lhs
 29               #define yylen WQL_len
 30               #define yydefred WQL_defred
 31               #define yydgoto WQL_dgoto
 32               #define yysindex WQL_sindex
 33               #define yyrindex WQL_rindex
 34               #define yygindex WQL_gindex
 35               #define yytable WQL_table
 36               #define yycheck WQL_check
 37               #define yyname WQL_name
 38               #define yyrule WQL_rule
 39               #define yysslim WQL_sslim
 40               #define yystacksize WQL_stacksize
 41               #define YYPREFIX "WQL_"
 42               #line 10 "WQL.y"
 43 mike  1.2     
 44               #include <Pegasus/Common/Config.h>
 45               #include <Pegasus/WQL/WQLOperation.h>
 46               #include <Pegasus/WQL/WQLOperand.h>
 47               #include <Pegasus/WQL/WQLParserState.h>
 48               #include <Pegasus/WQL/WQLSelectStatement.h>
 49               #include <string.h>
 50               #include <stdlib.h>
 51               
 52               #ifdef PEGASUS_OS_TYPE_WINDOWS
 53               # include <malloc.h>
 54               #endif
 55               
 56               #if defined(PEGASUS_COMPILER_ACC) && defined(PEGASUS_OS_HPUX)
 57               # include <alloca.h>
 58               #endif
 59               
 60               #if 0
 61               # define WQL_TRACE(X) printf X
 62               #else
 63               # define WQL_TRACE(X)
 64 mike  1.2     #endif
 65               
 66               extern int WQL_lex();
 67 kumpf 1.3     extern int WQL_error(const char*);
 68 mike  1.2     
 69 karl  1.6.2.2 /**/
 70               /* Define the global parser state object:*/
 71               /**/
 72 mike  1.2     
 73               PEGASUS_USING_PEGASUS;
 74               
 75               PEGASUS_NAMESPACE_BEGIN
 76               
 77               extern WQLParserState* globalParserState;
 78               
 79               PEGASUS_NAMESPACE_END
 80               
 81 karl  1.6.2.2 #line 58 "WQL.y"
 82 mike  1.2     typedef union 
 83               {
 84                  int intValue;
 85                  double doubleValue;
 86                  char* strValue;
 87                  void* nodeValue;
 88               } YYSTYPE;
 89 karl  1.6.2.2 #line 90 "y.tab.c"
 90               #define YYERRCODE 256
 91               #define TOK_INTEGER 257
 92               #define TOK_DOUBLE 258
 93               #define TOK_STRING 259
 94               #define TOK_TRUE 260
 95               #define TOK_FALSE 261
 96               #define TOK_NULL 262
 97               #define TOK_EQ 263
 98               #define TOK_NE 264
 99               #define TOK_LT 265
100               #define TOK_LE 266
101               #define TOK_GT 267
102               #define TOK_GE 268
103               #define TOK_NOT 269
104               #define TOK_OR 270
105               #define TOK_AND 271
106               #define TOK_IS 272
107               #define TOK_IDENTIFIER 273
108               #define TOK_SELECT 274
109               #define TOK_WHERE 275
110 karl  1.6.2.2 #define TOK_FROM 276
111               #define TOK_UNEXPECTED_CHAR 277
112               const short WQL_lhs[] = {                                        -1,
113                   0,    9,   10,   10,    2,    2,   11,   11,    7,    8,
114                   6,    6,    6,    6,    6,    6,    6,    3,    3,    4,
115                   4,    4,    4,    4,    4,    5,    5,   13,   13,    1,
116                  12,   14,   14,   14,   14,   14,
117               };
118               const short WQL_len[] = {                                         2,
119                   1,    3,    1,    1,    1,    3,    2,    1,    2,    2,
120                   3,    3,    2,    3,    1,    3,    4,    1,    1,    3,
121                   3,    3,    3,    3,    3,    3,    4,    1,    1,    1,
122                   1,    1,    1,    1,    1,    1,
123               };
124               const short WQL_defred[] = {                                      0,
125                   0,    0,    1,   30,    3,    5,    0,    0,    0,    0,
126                   0,    2,    6,   31,    9,    0,    7,   33,   34,   35,
127                  28,   29,    0,    0,   32,    0,   18,   19,    0,   36,
128                   0,   13,    0,    0,    0,    0,    0,    0,    0,    0,
129                   0,    0,    0,   14,    0,   16,    0,   12,   24,   25,
130                  20,   22,   21,   23,   26,    0,   17,   27,
131 karl  1.6.2.2 };
132               const short WQL_dgoto[] = {                                       2,
133                  25,    7,   26,   27,   28,   29,   11,   17,    3,    8,
134                  12,   15,   30,   31,
135               };
136               const short WQL_sindex[] = {                                   -241,
137                 -38,    0,    0,    0,    0,    0,   -9, -237, -232, -225,
138                -228,    0,    0,    0,    0,  -40,    0,    0,    0,    0,
139                   0,    0,  -40,  -40,    0, -223,    0,    0, -233,    0,
140                -238,    0,  -39, -229,  -40,  -40, -252, -252, -252, -252,
141                -252, -252, -226,    0, -215,    0, -221,    0,    0,    0,
142                   0,    0,    0,    0,    0, -211,    0,    0,
143               };
144               const short WQL_rindex[] = {                                      0,
145                   0,    0,    0,    0,    0,    0, -224,    0,    0,    0,
146                  53,    0,    0,    0,    0,    0,    0,    0,    0,    0,
147                   0,    0,    0,    0,    0,    1,    0,    0,   54,    0,
148                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
149                   0,    0,    0,    0,    0,    0,    3,    0,    0,    0,
150                   0,    0,    0,    0,    0,    0,    0,    0,
151               };
152 karl  1.6.2.2 const short WQL_gindex[] = {                                      0,
153                  11,    0,    0,    0,    0,  -13,    0,    0,    0,    0,
154                   0,    0,  -21,  -23,
155               };
156               #define YYTABLESIZE 273
157               const short WQL_table[] = {                                      24,
158                  15,   44,   11,    5,   18,   19,   20,   21,   22,   32,
159                  33,    6,   46,   49,   50,   51,   52,   53,   54,   13,
160                   4,   47,   48,   57,   37,   38,   39,   40,   41,   42,
161                  21,   22,    1,   43,    9,   55,   35,   36,   10,   45,
162                   4,   15,   56,   11,   21,   22,   16,   14,   34,   36,
163                  58,    4,    8,   10,    0,    0,    0,    0,    0,    0,
164                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
165                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
166                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
167                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
168                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
169                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
170                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
171                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
172                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
173 karl  1.6.2.2     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
174                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
175                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
176                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
177                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
178                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
179                   0,    0,    0,    0,    0,    0,   18,   19,   20,   21,
180                  22,    0,    0,    0,    0,    0,    0,    0,   23,    0,
181                  35,   36,    4,    0,    4,    0,    0,    0,    0,    0,
182                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
183                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
184                   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
185                  15,   15,   11,
186               };
187               const short WQL_check[] = {                                      40,
188                   0,   41,    0,   42,  257,  258,  259,  260,  261,   23,
189                  24,    1,   34,   37,   38,   39,   40,   41,   42,    9,
190                 273,   35,   36,   45,  263,  264,  265,  266,  267,  268,
191                 260,  261,  274,  272,   44,  262,  270,  271,  276,  269,
192                 273,   41,  269,   41,  260,  261,  275,  273,  272,  271,
193                 262,  276,    0,    0,   -1,   -1,   -1,   -1,   -1,   -1,
194 karl  1.6.2.2    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
195                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
196                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
197                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
198                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
199                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
200                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
201                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
202                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
203                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
204                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
205                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
206                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
207                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
208                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
209                  -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,
210                 261,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  269,   -1,
211                 270,  271,  273,   -1,  273,   -1,   -1,   -1,   -1,   -1,
212                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
213                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
214                  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
215 karl  1.6.2.2   270,  271,  270,
216               };
217               #define YYFINAL 2
218               #ifndef YYDEBUG
219               #define YYDEBUG 0
220               #endif
221               #define YYMAXTOKEN 277
222               #if YYDEBUG
223               const char * const WQL_name[] = {
224               "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
225               0,0,0,0,0,0,"'('","')'","'*'",0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
226               0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
227               0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
228               0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
229               0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
230               0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"TOK_INTEGER",
231 mike  1.2     "TOK_DOUBLE","TOK_STRING","TOK_TRUE","TOK_FALSE","TOK_NULL","TOK_EQ","TOK_NE",
232 karl  1.6.2.2 "TOK_LT","TOK_LE","TOK_GT","TOK_GE","TOK_NOT","TOK_OR","TOK_AND","TOK_IS",
233               "TOK_IDENTIFIER","TOK_SELECT","TOK_WHERE","TOK_FROM","TOK_UNEXPECTED_CHAR",
234 mike  1.2     };
235 karl  1.6.2.2 const char * const WQL_rule[] = {
236               "$accept : start",
237               "start : selectStatement",
238               "selectStatement : TOK_SELECT selectList selectExpression",
239               "selectList : '*'",
240               "selectList : propertyList",
241               "propertyList : propertyName",
242               "propertyList : propertyList ',' propertyName",
243               "selectExpression : fromClause whereClause",
244               "selectExpression : fromClause",
245               "fromClause : TOK_FROM className",
246               "whereClause : TOK_WHERE searchCondition",
247               "searchCondition : searchCondition TOK_OR searchCondition",
248               "searchCondition : searchCondition TOK_AND searchCondition",
249               "searchCondition : TOK_NOT searchCondition",
250               "searchCondition : '(' searchCondition ')'",
251               "searchCondition : predicate",
252               "searchCondition : predicate TOK_IS truthValue",
253               "searchCondition : predicate TOK_IS TOK_NOT truthValue",
254               "predicate : comparisonPredicate",
255               "predicate : nullPredicate",
256 karl  1.6.2.2 "comparisonPredicate : comparisonTerm TOK_LT comparisonTerm",
257               "comparisonPredicate : comparisonTerm TOK_GT comparisonTerm",
258               "comparisonPredicate : comparisonTerm TOK_LE comparisonTerm",
259               "comparisonPredicate : comparisonTerm TOK_GE comparisonTerm",
260               "comparisonPredicate : comparisonTerm TOK_EQ comparisonTerm",
261               "comparisonPredicate : comparisonTerm TOK_NE comparisonTerm",
262               "nullPredicate : comparisonTerm TOK_IS TOK_NULL",
263               "nullPredicate : comparisonTerm TOK_IS TOK_NOT TOK_NULL",
264               "truthValue : TOK_TRUE",
265               "truthValue : TOK_FALSE",
266               "propertyName : TOK_IDENTIFIER",
267               "className : TOK_IDENTIFIER",
268               "comparisonTerm : propertyName",
269               "comparisonTerm : TOK_INTEGER",
270               "comparisonTerm : TOK_DOUBLE",
271               "comparisonTerm : TOK_STRING",
272               "comparisonTerm : truthValue",
273 mike  1.2     };
274               #endif
275 karl  1.6.2.2 #if YYDEBUG
276               #include <stdio.h>
277 mike  1.2     #endif
278 karl  1.6.2.2 #ifdef YYSTACKSIZE
279 mike  1.2     #undef YYMAXDEPTH
280 karl  1.6.2.2 #define YYMAXDEPTH YYSTACKSIZE
281               #else
282               #ifdef YYMAXDEPTH
283               #define YYSTACKSIZE YYMAXDEPTH
284               #else
285               #define YYSTACKSIZE 10000
286 mike  1.2     #define YYMAXDEPTH 10000
287               #endif
288               #endif
289 karl  1.6.2.2 #define YYINITSTACKSIZE 200
290               int yydebug;
291               int yynerrs;
292               int yyerrflag;
293               int yychar;
294               short *yyssp;
295               YYSTYPE *yyvsp;
296               YYSTYPE yyval;
297               YYSTYPE yylval;
298               short *yyss;
299               short *yysslim;
300               YYSTYPE *yyvs;
301               int yystacksize;
302               /* allocate initial stack or double stack size, up to YYMAXDEPTH */
303               static int yygrowstack()
304               {
305                   int newsize, i;
306                   short *newss;
307                   YYSTYPE *newvs;
308               
309                   if ((newsize = yystacksize) == 0)
310 karl  1.6.2.2         newsize = YYINITSTACKSIZE;
311                   else if (newsize >= YYMAXDEPTH)
312                       return -1;
313                   else if ((newsize *= 2) > YYMAXDEPTH)
314                       newsize = YYMAXDEPTH;
315                   i = yyssp - yyss;
316                   newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) :
317                     (short *)malloc(newsize * sizeof *newss);
318                   if (newss == NULL)
319                       return -1;
320                   yyss = newss;
321                   yyssp = newss + i;
322                   newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) :
323                     (YYSTYPE *)malloc(newsize * sizeof *newvs);
324                   if (newvs == NULL)
325                       return -1;
326                   yyvs = newvs;
327                   yyvsp = newvs + i;
328                   yystacksize = newsize;
329                   yysslim = yyss + newsize - 1;
330                   return 0;
331 karl  1.6.2.2 }
332 mike  1.2     
333 karl  1.6.2.2 #define YYABORT goto yyabort
334               #define YYREJECT goto yyabort
335               #define YYACCEPT goto yyaccept
336               #define YYERROR goto yyerrlab
337               
338               #ifndef YYPARSE_PARAM
339               #if defined(__cplusplus) || __STDC__
340               #define YYPARSE_PARAM_ARG void
341 mike  1.2     #define YYPARSE_PARAM_DECL
342 karl  1.6.2.2 #else	/* ! ANSI-C/C++ */
343 mike  1.2     #define YYPARSE_PARAM_ARG
344               #define YYPARSE_PARAM_DECL
345 karl  1.6.2.2 #endif	/* ANSI-C/C++ */
346               #else	/* YYPARSE_PARAM */
347               #ifndef YYPARSE_PARAM_TYPE
348               #define YYPARSE_PARAM_TYPE void *
349 mike  1.2     #endif
350 karl  1.6.2.2 #if defined(__cplusplus) || __STDC__
351               #define YYPARSE_PARAM_ARG YYPARSE_PARAM_TYPE YYPARSE_PARAM
352               #define YYPARSE_PARAM_DECL
353               #else	/* ! ANSI-C/C++ */
354               #define YYPARSE_PARAM_ARG YYPARSE_PARAM
355               #define YYPARSE_PARAM_DECL YYPARSE_PARAM_TYPE YYPARSE_PARAM;
356               #endif	/* ANSI-C/C++ */
357               #endif	/* ! YYPARSE_PARAM */
358 mike  1.2     
359               int
360 karl  1.6.2.2 yyparse (YYPARSE_PARAM_ARG)
361                   YYPARSE_PARAM_DECL
362 mike  1.2     {
363 karl  1.6.2.2     register int yym, yyn, yystate;
364               #if YYDEBUG
365                   register const char *yys;
366               
367                   if ((yys = getenv("YYDEBUG")))
368                   {
369                       yyn = *yys;
370                       if (yyn >= '0' && yyn <= '9')
371                           yydebug = yyn - '0';
372                   }
373               #endif
374               
375                   yynerrs = 0;
376                   yyerrflag = 0;
377                   yychar = (-1);
378               
379                   if (yyss == NULL && yygrowstack()) goto yyoverflow;
380                   yyssp = yyss;
381                   yyvsp = yyvs;
382                   *yyssp = yystate = 0;
383               
384 karl  1.6.2.2 yyloop:
385                   if ((yyn = yydefred[yystate])) goto yyreduce;
386                   if (yychar < 0)
387                   {
388                       if ((yychar = yylex()) < 0) yychar = 0;
389               #if YYDEBUG
390                       if (yydebug)
391                       {
392                           yys = 0;
393                           if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
394                           if (!yys) yys = "illegal-symbol";
395                           printf("%sdebug: state %d, reading %d (%s)\n",
396                                   YYPREFIX, yystate, yychar, yys);
397                       }
398               #endif
399                   }
400                   if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
401                           yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
402                   {
403               #if YYDEBUG
404                       if (yydebug)
405 karl  1.6.2.2             printf("%sdebug: state %d, shifting to state %d\n",
406                                   YYPREFIX, yystate, yytable[yyn]);
407               #endif
408                       if (yyssp >= yysslim && yygrowstack())
409                       {
410                           goto yyoverflow;
411                       }
412                       *++yyssp = yystate = yytable[yyn];
413                       *++yyvsp = yylval;
414                       yychar = (-1);
415                       if (yyerrflag > 0)  --yyerrflag;
416                       goto yyloop;
417                   }
418                   if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
419                           yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
420                   {
421                       yyn = yytable[yyn];
422                       goto yyreduce;
423                   }
424                   if (yyerrflag) goto yyinrecovery;
425               #if defined(lint) || defined(__GNUC__)
426 karl  1.6.2.2     goto yynewerror;
427               #endif
428               yynewerror:
429                   yyerror("syntax error");
430               #if defined(lint) || defined(__GNUC__)
431 mike  1.2         goto yyerrlab;
432               #endif
433 karl  1.6.2.2 yyerrlab:
434                   ++yynerrs;
435               yyinrecovery:
436                   if (yyerrflag < 3)
437                   {
438                       yyerrflag = 3;
439                       for (;;)
440                       {
441                           if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
442                                   yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
443                           {
444               #if YYDEBUG
445                               if (yydebug)
446                                   printf("%sdebug: state %d, error recovery shifting\
447                to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
448               #endif
449                               if (yyssp >= yysslim && yygrowstack())
450                               {
451                                   goto yyoverflow;
452                               }
453                               *++yyssp = yystate = yytable[yyn];
454 karl  1.6.2.2                 *++yyvsp = yylval;
455                               goto yyloop;
456                           }
457                           else
458                           {
459               #if YYDEBUG
460                               if (yydebug)
461                                   printf("%sdebug: error recovery discarding state %d\n",
462                                           YYPREFIX, *yyssp);
463               #endif
464                               if (yyssp <= yyss) goto yyabort;
465                               --yyssp;
466                               --yyvsp;
467                           }
468                       }
469                   }
470                   else
471                   {
472                       if (yychar == 0) goto yyabort;
473               #if YYDEBUG
474                       if (yydebug)
475 karl  1.6.2.2         {
476                           yys = 0;
477                           if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
478                           if (!yys) yys = "illegal-symbol";
479                           printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
480                                   YYPREFIX, yystate, yychar, yys);
481                       }
482 mike  1.2     #endif
483 karl  1.6.2.2         yychar = (-1);
484                       goto yyloop;
485                   }
486 mike  1.2     yyreduce:
487 karl  1.6.2.2 #if YYDEBUG
488                   if (yydebug)
489                       printf("%sdebug: state %d, reducing by rule %d (%s)\n",
490                               YYPREFIX, yystate, yyn, yyrule[yyn]);
491               #endif
492                   yym = yylen[yyn];
493                   yyval = yyvsp[1-yym];
494                   switch (yyn)
495 mike  1.2         {
496               case 1:
497 karl  1.6.2.2 #line 131 "WQL.y"
498 mike  1.2     {
499               	WQL_TRACE(("YACC: start\n"));
500 karl  1.6.2.2     }
501               break;
502 mike  1.2     case 2:
503 karl  1.6.2.2 #line 137 "WQL.y"
504 mike  1.2     {
505               
506 karl  1.6.2.2     }
507               break;
508 mike  1.2     case 3:
509 karl  1.6.2.2 #line 143 "WQL.y"
510 mike  1.2     {
511 kumpf 1.4     	globalParserState->statement->setAllProperties(true);
512 karl  1.6.2.2     }
513               break;
514 mike  1.2     case 4:
515 karl  1.6.2.2 #line 147 "WQL.y"
516 mike  1.2     {
517               
518 karl  1.6.2.2     }
519               break;
520 mike  1.2     case 5:
521 karl  1.6.2.2 #line 153 "WQL.y"
522 mike  1.2     {
523 kumpf 1.4     	globalParserState->statement->appendSelectPropertyName(CIMName(yyvsp[0].strValue));
524 karl  1.6.2.2     }
525               break;
526 mike  1.2     case 6:
527 karl  1.6.2.2 #line 157 "WQL.y"
528 mike  1.2     {
529 kumpf 1.4     	globalParserState->statement->appendSelectPropertyName(CIMName(yyvsp[0].strValue));
530 karl  1.6.2.2     }
531               break;
532 mike  1.2     case 7:
533 karl  1.6.2.2 #line 163 "WQL.y"
534 mike  1.2     {
535               
536 karl  1.6.2.2     }
537               break;
538 mike  1.2     case 8:
539 karl  1.6.2.2 #line 167 "WQL.y"
540 mike  1.2     {
541               
542 karl  1.6.2.2     }
543               break;
544 mike  1.2     case 9:
545 karl  1.6.2.2 #line 173 "WQL.y"
546 mike  1.2     {
547               	WQL_TRACE(("YACC: fromClause: TOK_FROM className(%s)\n", yyvsp[0].strValue));
548 kumpf 1.4     	globalParserState->statement->setClassName(CIMName(yyvsp[0].strValue));
549 karl  1.6.2.2     }
550               break;
551 mike  1.2     case 10:
552 karl  1.6.2.2 #line 180 "WQL.y"
553 mike  1.2     {
554               
555 karl  1.6.2.2     }
556               break;
557 mike  1.2     case 11:
558 karl  1.6.2.2 #line 186 "WQL.y"
559 mike  1.2     {
560               	WQL_TRACE(("YACC: TOK_OR\n"));
561               	globalParserState->statement->appendOperation(WQL_OR);
562 karl  1.6.2.2     }
563               break;
564 mike  1.2     case 12:
565 karl  1.6.2.2 #line 191 "WQL.y"
566 mike  1.2     {
567               	WQL_TRACE(("YACC: TOK_AND\n"));
568               	globalParserState->statement->appendOperation(WQL_AND);
569 karl  1.6.2.2     }
570               break;
571 mike  1.2     case 13:
572 karl  1.6.2.2 #line 196 "WQL.y"
573 mike  1.2     {
574               	WQL_TRACE(("YACC: TOK_NOT\n"));
575               
576               	globalParserState->statement->appendOperation(WQL_NOT);
577 karl  1.6.2.2     }
578               break;
579 mike  1.2     case 14:
580 karl  1.6.2.2 #line 202 "WQL.y"
581 mike  1.2     {
582               
583 karl  1.6.2.2     }
584               break;
585 mike  1.2     case 15:
586 karl  1.6.2.2 #line 206 "WQL.y"
587 mike  1.2     {
588               
589 karl  1.6.2.2     }
590               break;
591 mike  1.2     case 16:
592 karl  1.6.2.2 #line 210 "WQL.y"
593 mike  1.2     {
594               	WQLOperation op = yyvsp[0].intValue ? WQL_IS_TRUE : WQL_IS_FALSE;
595               	globalParserState->statement->appendOperation(op);
596 karl  1.6.2.2     }
597               break;
598 mike  1.2     case 17:
599 karl  1.6.2.2 #line 215 "WQL.y"
600 mike  1.2     {
601               	WQLOperation op = yyvsp[0].intValue ? WQL_IS_NOT_TRUE : WQL_IS_NOT_FALSE;
602               	globalParserState->statement->appendOperation(op);
603 karl  1.6.2.2     }
604               break;
605 mike  1.2     case 18:
606 karl  1.6.2.2 #line 224 "WQL.y"
607 mike  1.2     {
608               
609 karl  1.6.2.2     }
610               break;
611 mike  1.2     case 19:
612 karl  1.6.2.2 #line 228 "WQL.y"
613 mike  1.2     {
614               
615 karl  1.6.2.2     }
616               break;
617 mike  1.2     case 20:
618 karl  1.6.2.2 #line 234 "WQL.y"
619 mike  1.2     {
620               	WQL_TRACE(("YACC: TOK_LT\n"));
621               	globalParserState->statement->appendOperation(WQL_LT);
622 karl  1.6.2.2     }
623               break;
624 mike  1.2     case 21:
625 karl  1.6.2.2 #line 239 "WQL.y"
626 mike  1.2     {
627               	WQL_TRACE(("YACC: TOK_GT\n"));
628               	globalParserState->statement->appendOperation(WQL_GT);
629 karl  1.6.2.2     }
630               break;
631 mike  1.2     case 22:
632 karl  1.6.2.2 #line 244 "WQL.y"
633 mike  1.2     {
634               	WQL_TRACE(("YACC: TOK_LE\n"));
635               	globalParserState->statement->appendOperation(WQL_LE);
636 karl  1.6.2.2     }
637               break;
638 mike  1.2     case 23:
639 karl  1.6.2.2 #line 249 "WQL.y"
640 mike  1.2     {
641               	WQL_TRACE(("YACC: TOK_GE\n"));
642               	globalParserState->statement->appendOperation(WQL_GE);
643 karl  1.6.2.2     }
644               break;
645 mike  1.2     case 24:
646 karl  1.6.2.2 #line 254 "WQL.y"
647 mike  1.2     {
648               	WQL_TRACE(("YACC: TOK_EQ\n"));
649               	globalParserState->statement->appendOperation(WQL_EQ);
650 karl  1.6.2.2     }
651               break;
652 mike  1.2     case 25:
653 karl  1.6.2.2 #line 259 "WQL.y"
654 mike  1.2     {
655               	WQL_TRACE(("YACC: TOK_NE\n"));
656               	globalParserState->statement->appendOperation(WQL_NE);
657 karl  1.6.2.2     }
658               break;
659 mike  1.2     case 26:
660 karl  1.6.2.2 #line 266 "WQL.y"
661 mike  1.2     {
662               	WQL_TRACE(("YACC: nullPredicate : comparisonTerm IS NULL\n"));
663               	globalParserState->statement->appendOperation(WQL_IS_NULL);
664 karl  1.6.2.2     }
665               break;
666 mike  1.2     case 27:
667 karl  1.6.2.2 #line 271 "WQL.y"
668 mike  1.2     {
669               	WQL_TRACE(("YACC: nullPredicate : comparisonTerm IS NOT NULL\n"));
670               	globalParserState->statement->appendOperation(WQL_IS_NOT_NULL);
671 karl  1.6.2.2     }
672               break;
673 mike  1.2     case 28:
674 karl  1.6.2.2 #line 278 "WQL.y"
675 mike  1.2     {
676               	yyval.intValue = 1;
677 karl  1.6.2.2     }
678               break;
679 mike  1.2     case 29:
680 karl  1.6.2.2 #line 282 "WQL.y"
681 mike  1.2     {
682               	yyval.intValue = 0;
683 karl  1.6.2.2     }
684               break;
685 mike  1.2     case 30:
686 karl  1.6.2.2 #line 288 "WQL.y"
687 mike  1.2     {
688               	WQL_TRACE(("YACC: propertyName : TOK_IDENTIFIER(%s)\n", yyvsp[0].strValue));
689               	yyval.strValue = yyvsp[0].strValue;
690 karl  1.6.2.2     }
691               break;
692 mike  1.2     case 31:
693 karl  1.6.2.2 #line 294 "WQL.y"
694 mike  1.2     {
695               	WQL_TRACE(("YACC: TOK_IDENTIFIER %s\n", yyvsp[0].strValue));
696               	yyval.strValue = yyvsp[0].strValue;
697 karl  1.6.2.2     }
698               break;
699 mike  1.2     case 32:
700 karl  1.6.2.2 #line 301 "WQL.y"
701 mike  1.2     {
702               	globalParserState->statement->appendOperand(
703               	    WQLOperand(yyvsp[0].strValue, WQL_PROPERTY_NAME_TAG));
704 kumpf 1.4     	globalParserState->statement->appendWherePropertyName(CIMName(yyvsp[0].strValue));
705 karl  1.6.2.2     }
706               break;
707 mike  1.2     case 33:
708 karl  1.6.2.2 #line 307 "WQL.y"
709 mike  1.2     {
710               	globalParserState->statement->appendOperand(
711               	    WQLOperand(yyvsp[0].intValue, WQL_INTEGER_VALUE_TAG));
712 karl  1.6.2.2     }
713               break;
714 mike  1.2     case 34:
715 karl  1.6.2.2 #line 312 "WQL.y"
716 mike  1.2     {
717               	globalParserState->statement->appendOperand(
718               	    WQLOperand(yyvsp[0].doubleValue, WQL_DOUBLE_VALUE_TAG));
719 karl  1.6.2.2     }
720               break;
721 mike  1.2     case 35:
722 karl  1.6.2.2 #line 317 "WQL.y"
723 mike  1.2     {
724               	globalParserState->statement->appendOperand(
725               	    WQLOperand(yyvsp[0].strValue, WQL_STRING_VALUE_TAG));
726 karl  1.6.2.2     }
727               break;
728 mike  1.2     case 36:
729 karl  1.6.2.2 #line 322 "WQL.y"
730 mike  1.2     {
731               	globalParserState->statement->appendOperand(
732               	    WQLOperand(yyvsp[0].intValue != 0, WQL_BOOLEAN_VALUE_TAG));
733                   }
734 karl  1.6.2.2 break;
735               #line 736 "y.tab.c"
736 mike  1.2         }
737 karl  1.6.2.2     yyssp -= yym;
738                   yystate = *yyssp;
739                   yyvsp -= yym;
740                   yym = yylhs[yyn];
741                   if (yystate == 0 && yym == 0)
742                   {
743               #if YYDEBUG
744                       if (yydebug)
745                           printf("%sdebug: after reduction, shifting from state 0 to\
746                state %d\n", YYPREFIX, YYFINAL);
747               #endif
748                       yystate = YYFINAL;
749                       *++yyssp = YYFINAL;
750                       *++yyvsp = yyval;
751                       if (yychar < 0)
752                       {
753                           if ((yychar = yylex()) < 0) yychar = 0;
754               #if YYDEBUG
755                           if (yydebug)
756                           {
757                               yys = 0;
758 karl  1.6.2.2                 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
759                               if (!yys) yys = "illegal-symbol";
760                               printf("%sdebug: state %d, reading %d (%s)\n",
761                                       YYPREFIX, YYFINAL, yychar, yys);
762                           }
763               #endif
764                       }
765                       if (yychar == 0) goto yyaccept;
766                       goto yyloop;
767                   }
768                   if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
769                           yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
770                       yystate = yytable[yyn];
771                   else
772                       yystate = yydgoto[yym];
773               #if YYDEBUG
774                   if (yydebug)
775                       printf("%sdebug: after reduction, shifting from state %d \
776               to state %d\n", YYPREFIX, *yyssp, yystate);
777               #endif
778                   if (yyssp >= yysslim && yygrowstack())
779 karl  1.6.2.2     {
780                       goto yyoverflow;
781                   }
782                   *++yyssp = yystate;
783                   *++yyvsp = yyval;
784                   goto yyloop;
785               yyoverflow:
786                   yyerror("yacc stack overflow");
787               yyabort:
788                   return (1);
789               yyaccept:
790                   return (0);
791 mike  1.2     }

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2