00001 /* A Bison parser, made by GNU Bison 2.3. */ 00002 00003 /* Skeleton interface for Bison GLR parsers in C 00004 00005 Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 00006 00007 This program is free software; you can redistribute it and/or modify 00008 it under the terms of the GNU General Public License as published by 00009 the Free Software Foundation; either version 2, or (at your option) 00010 any later version. 00011 00012 This program is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 GNU General Public License for more details. 00016 00017 You should have received a copy of the GNU General Public License 00018 along with this program; if not, write to the Free Software 00019 Foundation, Inc., 51 Franklin Street, Fifth Floor, 00020 Boston, MA 02110-1301, USA. */ 00021 00022 /* As a special exception, you may create a larger work that contains 00023 part or all of the Bison parser skeleton and distribute that work 00024 under terms of your choice, so long as that work isn't itself a 00025 parser generator using the skeleton or a modified version thereof 00026 as a parser skeleton. Alternatively, if you modify or redistribute 00027 the parser skeleton itself, you may (at your option) remove this 00028 special exception, which will cause the skeleton and the resulting 00029 Bison output files to be licensed under the GNU General Public 00030 License without this special exception. 00031 00032 This special exception was added by the Free Software Foundation in 00033 version 2.2 of Bison. */ 00034 00035 /* Tokens. */ 00036 #ifndef YYTOKENTYPE 00037 # define YYTOKENTYPE 00038 /* Put the tokens into the symbol table, so that GDB and other debuggers 00039 know about them. */ 00040 enum yytokentype { 00041 NOUNSTR = 258, 00042 NUMSEQ = 259, 00043 NUMSTR = 260, 00044 NUMHEX = 261, 00045 STRSEQ = 262, 00046 LITSTR = 263, 00047 NOTOP = 264, 00048 LEOP = 265, 00049 GEOP = 266, 00050 LTOP = 267, 00051 GTOP = 268, 00052 EQOP = 269, 00053 NEQOP = 270, 00054 ANDOP = 271, 00055 ANDNOTOP = 272, 00056 BETWEENOP = 273, 00057 INOP = 274, 00058 JOINOP = 275, 00059 ANYOP = 276, 00060 OROP = 277, 00061 XOROP = 278, 00062 BITOROP = 279, 00063 BITANDOP = 280, 00064 MINUSOP = 281, 00065 MULTOP = 282, 00066 DIVOP = 283, 00067 REMOP = 284, 00068 EXPOP = 285, 00069 ADDOP = 286, 00070 STRING_EXPRESSION = 287, 00071 UNOT = 288 00072 }; 00073 #endif 00074 00075 00076 /* Copy the first part of user declarations. */ 00077 #line 1 "predicate.y" 00078 00079 /* $Id$*/ 00080 /* 00081 Defines the grammar of the query conditions. 00082 00083 A set of query conditions is a set of range conditions joined together 00084 by logical oeprators. 00085 */ 00086 #include "util.h" 00087 #include "qExpr.h" 00088 #include "predicate.h" 00089 00090 #include <stack> 00091 #include <deque> 00092 #include <vector> 00093 00094 #include <string.h> 00095 #include <stdio.h> 00096 00097 int yylex(); 00098 00099 // variables with local file scope 00100 static std::stack<ibis::qExpr*, std::deque<ibis::qExpr*> > qexpr_stack; 00101 static ibis::qExpr *pn1 = 0; // for query expression 00102 00103 00104 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 00105 typedef union YYSTYPE 00106 #line 27 "predicate.y" 00107 { 00108 float fval; 00109 int ival; 00110 char *sval; 00111 } 00112 /* Line 2604 of glr.c. */ 00113 #line 114 "predicate.tab.h" 00114 YYSTYPE; 00115 # define YYSTYPE_IS_DECLARED 1 00116 # define YYSTYPE_IS_TRIVIAL 1 00117 #endif 00118 00119 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED 00120 typedef struct YYLTYPE 00121 { 00122 00123 char yydummy; 00124 00125 } YYLTYPE; 00126 # define YYLTYPE_IS_DECLARED 1 00127 # define YYLTYPE_IS_TRIVIAL 1 00128 #endif 00129 00130 00131 extern YYSTYPE yylval; 00132 00133 00134
![]() |