1*b1cdbd2cSJim Jagielski %{ 2*b1cdbd2cSJim Jagielski //------------------------------------------------------------ 3*b1cdbd2cSJim Jagielski // 4*b1cdbd2cSJim Jagielski // Licensed to the Apache Software Foundation (ASF) under one 5*b1cdbd2cSJim Jagielski // or more contributor license agreements. See the NOTICE file 6*b1cdbd2cSJim Jagielski // distributed with this work for additional information 7*b1cdbd2cSJim Jagielski // regarding copyright ownership. The ASF licenses this file 8*b1cdbd2cSJim Jagielski // to you under the Apache License, Version 2.0 (the 9*b1cdbd2cSJim Jagielski // "License"); you may not use this file except in compliance 10*b1cdbd2cSJim Jagielski // with the License. You may obtain a copy of the License at 11*b1cdbd2cSJim Jagielski // 12*b1cdbd2cSJim Jagielski // http://www.apache.org/licenses/LICENSE-2.0 13*b1cdbd2cSJim Jagielski // 14*b1cdbd2cSJim Jagielski // Unless required by applicable law or agreed to in writing, 15*b1cdbd2cSJim Jagielski // software distributed under the License is distributed on an 16*b1cdbd2cSJim Jagielski // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17*b1cdbd2cSJim Jagielski // KIND, either express or implied. See the License for the 18*b1cdbd2cSJim Jagielski // specific language governing permissions and limitations 19*b1cdbd2cSJim Jagielski // under the License. 20*b1cdbd2cSJim Jagielski // 21*b1cdbd2cSJim Jagielski //------------------------------------------------------------ 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski #define YY_EXIT 1 // YY_FATAL will not halt the application 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski #ifndef _CSTDARG_ 26*b1cdbd2cSJim Jagielski #include <cstdarg> // std::va_list 27*b1cdbd2cSJim Jagielski #endif 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski #ifndef _INC_STRING 30*b1cdbd2cSJim Jagielski #include <string.h> 31*b1cdbd2cSJim Jagielski #endif 32*b1cdbd2cSJim Jagielski 33*b1cdbd2cSJim Jagielski #include "internalnode.hxx" 34*b1cdbd2cSJim Jagielski 35*b1cdbd2cSJim Jagielski #ifndef _CONNECTIVITY_SQLYACC_HXX 36*b1cdbd2cSJim Jagielski #define _CONNECTIVITY_SQLYACC_HXX 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski #ifndef SQLYYDEBUG 39*b1cdbd2cSJim Jagielski #define SQLYYDEBUG 1 40*b1cdbd2cSJim Jagielski #endif 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski #include "sqlbison.hxx" 43*b1cdbd2cSJim Jagielski #endif 44*b1cdbd2cSJim Jagielski #include "sqlscan.hxx" 45*b1cdbd2cSJim Jagielski #include <osl/diagnose.h> 46*b1cdbd2cSJim Jagielski #include <rtl/strbuf.hxx> 47*b1cdbd2cSJim Jagielski #include <connectivity/sqlparse.hxx> 48*b1cdbd2cSJim Jagielski 49*b1cdbd2cSJim Jagielski #if defined __GNUC__ 50*b1cdbd2cSJim Jagielski #pragma GCC system_header 51*b1cdbd2cSJim Jagielski #elif defined __SUNPRO_CC 52*b1cdbd2cSJim Jagielski #pragma disable_warn 53*b1cdbd2cSJim Jagielski #elif defined _MSC_VER 54*b1cdbd2cSJim Jagielski #pragma warning(push, 1) 55*b1cdbd2cSJim Jagielski /**/ 56*b1cdbd2cSJim Jagielski #ifdef yywrap 57*b1cdbd2cSJim Jagielski #undef yywrap 58*b1cdbd2cSJim Jagielski #define yywrap() 1 59*b1cdbd2cSJim Jagielski #endif 60*b1cdbd2cSJim Jagielski /**/ 61*b1cdbd2cSJim Jagielski #endif 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski using namespace connectivity; 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski //============================================================================= 66*b1cdbd2cSJim Jagielski // 67*b1cdbd2cSJim Jagielski // Erzeugung der Blaetter fuer die Token 68*b1cdbd2cSJim Jagielski // Blaetter werden generell vom Lexer erzeugt 69*b1cdbd2cSJim Jagielski 70*b1cdbd2cSJim Jagielski static ::rtl::OUString aEmptyString; 71*b1cdbd2cSJim Jagielski 72*b1cdbd2cSJim Jagielski static sal_Int32 gatherString(sal_Int32 delim, sal_Int32 nTyp); 73*b1cdbd2cSJim Jagielski static sal_Int32 gatherName(const sal_Char*); 74*b1cdbd2cSJim Jagielski static sal_Int32 gatherNamePre(const sal_Char* ); 75*b1cdbd2cSJim Jagielski // has to be set before the parser starts 76*b1cdbd2cSJim Jagielski OSQLScanner* xxx_pGLOBAL_SQLSCAN = NULL; 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski #define SQL_NEW_NODE(text, token) \ 79*b1cdbd2cSJim Jagielski SQLyylval.pParseNode = new OSQLInternalNode(text, token); 80*b1cdbd2cSJim Jagielski 81*b1cdbd2cSJim Jagielski #define SQL_NEW_KEYWORD(token) \ 82*b1cdbd2cSJim Jagielski SQLyylval.pParseNode = new OSQLInternalNode(aEmptyString, SQL_NODE_KEYWORD, (token)); return token; 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski #define SQL_NEW_INTNUM SQL_NEW_NODE(::rtl::OUString(SQLyytext,strlen(SQLyytext),RTL_TEXTENCODING_UTF8), SQL_NODE_INTNUM); return SQL_TOKEN_INTNUM; 85*b1cdbd2cSJim Jagielski #define SQL_NEW_APPROXNUM SQL_NEW_NODE(::rtl::OUString(SQLyytext,strlen(SQLyytext),RTL_TEXTENCODING_UTF8), SQL_NODE_APPROXNUM); return SQL_TOKEN_APPROXNUM; 86*b1cdbd2cSJim Jagielski #define SQL_NEW_DATE SQL_NEW_NODE(::rtl::OUString(SQLyytext,strlen(SQLyytext),RTL_TEXTENCODING_UTF8), SQL_NODE_ACCESS_DATE); return SQL_TOKEN_ACCESS_DATE; 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski #define YY_INPUT(buf,result,max_size) \ 89*b1cdbd2cSJim Jagielski { \ 90*b1cdbd2cSJim Jagielski buf[0] = xxx_pGLOBAL_SQLSCAN->SQLyygetc(); \ 91*b1cdbd2cSJim Jagielski result = buf[0] != -1; \ 92*b1cdbd2cSJim Jagielski } 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielski #define YY_FATAL_ERROR(msg) \ 95*b1cdbd2cSJim Jagielski { \ 96*b1cdbd2cSJim Jagielski xxx_pGLOBAL_SQLSCAN->SQLyyerror(msg); \ 97*b1cdbd2cSJim Jagielski } 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski // 100*b1cdbd2cSJim Jagielski //============================================================================= 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielski %} 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielski %s SQL 105*b1cdbd2cSJim Jagielski %s PREDICATE_ENG 106*b1cdbd2cSJim Jagielski %s PREDICATE_GER 107*b1cdbd2cSJim Jagielski %s DATE 108*b1cdbd2cSJim Jagielski %s STRING 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski %option noyywrap 111*b1cdbd2cSJim Jagielski %option never-interactive 112*b1cdbd2cSJim Jagielski %% 113*b1cdbd2cSJim Jagielski 114*b1cdbd2cSJim Jagielski ABS {SQL_NEW_KEYWORD(SQL_TOKEN_ABS); } 115*b1cdbd2cSJim Jagielski ACOS {SQL_NEW_KEYWORD(SQL_TOKEN_ACOS); } 116*b1cdbd2cSJim Jagielski AFTER {SQL_NEW_KEYWORD(SQL_TOKEN_AFTER); } 117*b1cdbd2cSJim Jagielski ALL {SQL_NEW_KEYWORD(SQL_TOKEN_ALL); } 118*b1cdbd2cSJim Jagielski ALTER {SQL_NEW_KEYWORD(SQL_TOKEN_ALTER); } 119*b1cdbd2cSJim Jagielski AND {SQL_NEW_KEYWORD(SQL_TOKEN_AND); } 120*b1cdbd2cSJim Jagielski ANY {SQL_NEW_KEYWORD(SQL_TOKEN_ANY); } 121*b1cdbd2cSJim Jagielski ARRAY_AGG {SQL_NEW_KEYWORD(SQL_TOKEN_ARRAY_AGG); } 122*b1cdbd2cSJim Jagielski AS {SQL_NEW_KEYWORD(SQL_TOKEN_AS); } 123*b1cdbd2cSJim Jagielski ASC {SQL_NEW_KEYWORD(SQL_TOKEN_ASC); } 124*b1cdbd2cSJim Jagielski ASCII {SQL_NEW_KEYWORD(SQL_TOKEN_ASCII); } 125*b1cdbd2cSJim Jagielski ASIN {SQL_NEW_KEYWORD(SQL_TOKEN_ASIN); } 126*b1cdbd2cSJim Jagielski AT {SQL_NEW_KEYWORD(SQL_TOKEN_AT); } 127*b1cdbd2cSJim Jagielski ATAN {SQL_NEW_KEYWORD(SQL_TOKEN_ATAN); } 128*b1cdbd2cSJim Jagielski ATAN2 {SQL_NEW_KEYWORD(SQL_TOKEN_ATAN2); } 129*b1cdbd2cSJim Jagielski ATOMIC {SQL_NEW_KEYWORD(SQL_TOKEN_ATOMIC); } 130*b1cdbd2cSJim Jagielski AUTHORIZATION {SQL_NEW_KEYWORD(SQL_TOKEN_AUTHORIZATION); } 131*b1cdbd2cSJim Jagielski AVG {SQL_NEW_KEYWORD(SQL_TOKEN_AVG); } 132*b1cdbd2cSJim Jagielski 133*b1cdbd2cSJim Jagielski BEFORE {SQL_NEW_KEYWORD(SQL_TOKEN_BEFORE); } 134*b1cdbd2cSJim Jagielski BEGIN {SQL_NEW_KEYWORD(SQL_TOKEN_BEGIN); } 135*b1cdbd2cSJim Jagielski BETWEEN {SQL_NEW_KEYWORD(SQL_TOKEN_BETWEEN); } 136*b1cdbd2cSJim Jagielski BIGINT {SQL_NEW_KEYWORD(SQL_TOKEN_BIGINT); } 137*b1cdbd2cSJim Jagielski BINARY {SQL_NEW_KEYWORD(SQL_TOKEN_BINARY); } 138*b1cdbd2cSJim Jagielski BIT {SQL_NEW_KEYWORD(SQL_TOKEN_BIT); } 139*b1cdbd2cSJim Jagielski BIT_LENGTH {SQL_NEW_KEYWORD(SQL_TOKEN_BIT_LENGTH); } 140*b1cdbd2cSJim Jagielski BLOB {SQL_NEW_KEYWORD(SQL_TOKEN_BLOB); } 141*b1cdbd2cSJim Jagielski BOTH {SQL_NEW_KEYWORD(SQL_TOKEN_BOTH); } 142*b1cdbd2cSJim Jagielski BY {SQL_NEW_KEYWORD(SQL_TOKEN_BY); } 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski CALL {SQL_NEW_KEYWORD(SQL_TOKEN_CALL); } 145*b1cdbd2cSJim Jagielski CASE {SQL_NEW_KEYWORD(SQL_TOKEN_CASE); } 146*b1cdbd2cSJim Jagielski CAST {SQL_NEW_KEYWORD(SQL_TOKEN_CAST); } 147*b1cdbd2cSJim Jagielski CEILING {SQL_NEW_KEYWORD(SQL_TOKEN_CEILING); } 148*b1cdbd2cSJim Jagielski CHAR {SQL_NEW_KEYWORD(SQL_TOKEN_CHAR); } 149*b1cdbd2cSJim Jagielski CHARACTER {SQL_NEW_KEYWORD(SQL_TOKEN_CHARACTER); } 150*b1cdbd2cSJim Jagielski CHAR(ACTER)?_LENGTH {SQL_NEW_KEYWORD(SQL_TOKEN_CHAR_LENGTH); } 151*b1cdbd2cSJim Jagielski CHECK {SQL_NEW_KEYWORD(SQL_TOKEN_CHECK); } 152*b1cdbd2cSJim Jagielski CLOB {SQL_NEW_KEYWORD(SQL_TOKEN_CLOB); } 153*b1cdbd2cSJim Jagielski COALESCE {SQL_NEW_KEYWORD(SQL_TOKEN_COALESCE); } 154*b1cdbd2cSJim Jagielski COLLATE {SQL_NEW_KEYWORD(SQL_TOKEN_COLLATE); } 155*b1cdbd2cSJim Jagielski COLLECT {SQL_NEW_KEYWORD(SQL_TOKEN_COLLECT); } 156*b1cdbd2cSJim Jagielski COMMIT {SQL_NEW_KEYWORD(SQL_TOKEN_COMMIT); } 157*b1cdbd2cSJim Jagielski CONCAT {SQL_NEW_KEYWORD(SQL_TOKEN_CONCAT); } 158*b1cdbd2cSJim Jagielski CONTINUE {SQL_NEW_KEYWORD(SQL_TOKEN_CONTINUE); } 159*b1cdbd2cSJim Jagielski CONVERT {SQL_NEW_KEYWORD(SQL_TOKEN_CONVERT); } 160*b1cdbd2cSJim Jagielski COS {SQL_NEW_KEYWORD(SQL_TOKEN_COS); } 161*b1cdbd2cSJim Jagielski COT {SQL_NEW_KEYWORD(SQL_TOKEN_COT); } 162*b1cdbd2cSJim Jagielski COUNT {SQL_NEW_KEYWORD(SQL_TOKEN_COUNT); } 163*b1cdbd2cSJim Jagielski CREATE {SQL_NEW_KEYWORD(SQL_TOKEN_CREATE); } 164*b1cdbd2cSJim Jagielski CROSS {SQL_NEW_KEYWORD(SQL_TOKEN_CROSS); } 165*b1cdbd2cSJim Jagielski CUME_RANK {SQL_NEW_KEYWORD(SQL_TOKEN_CUME_DIST); } 166*b1cdbd2cSJim Jagielski CURRENT {SQL_NEW_KEYWORD(SQL_TOKEN_CURRENT); } 167*b1cdbd2cSJim Jagielski CURRENT_DATE {SQL_NEW_KEYWORD(SQL_TOKEN_CURRENT_DATE); } 168*b1cdbd2cSJim Jagielski CURRENT_CATALOG {SQL_NEW_KEYWORD(SQL_TOKEN_CURRENT_CATALOG); } 169*b1cdbd2cSJim Jagielski CURRENT_DEFAULT_TRANSFORM_GROUP {SQL_NEW_KEYWORD(SQL_TOKEN_CURRENT_DEFAULT_TRANSFORM_GROUP); } 170*b1cdbd2cSJim Jagielski CURRENT_PATH {SQL_NEW_KEYWORD(SQL_TOKEN_CURRENT_PATH); } 171*b1cdbd2cSJim Jagielski CURRENT_ROLE {SQL_NEW_KEYWORD(SQL_TOKEN_CURRENT_ROLE); } 172*b1cdbd2cSJim Jagielski CURRENT_SCHEMA {SQL_NEW_KEYWORD(SQL_TOKEN_CURRENT_SCHEMA); } 173*b1cdbd2cSJim Jagielski CURRENT_USER {SQL_NEW_KEYWORD(SQL_TOKEN_CURRENT_USER); } 174*b1cdbd2cSJim Jagielski CURDATE {SQL_NEW_KEYWORD(SQL_TOKEN_CURDATE); } 175*b1cdbd2cSJim Jagielski CURRENT_TIME {SQL_NEW_KEYWORD(SQL_TOKEN_CURRENT_TIME); } 176*b1cdbd2cSJim Jagielski CURTIME {SQL_NEW_KEYWORD(SQL_TOKEN_CURTIME); } 177*b1cdbd2cSJim Jagielski CURRENT_TIMESTAMP {SQL_NEW_KEYWORD(SQL_TOKEN_CURRENT_TIMESTAMP); } 178*b1cdbd2cSJim Jagielski CURSOR {SQL_NEW_KEYWORD(SQL_TOKEN_CURSOR); } 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski D {SQL_NEW_KEYWORD(SQL_TOKEN_D); } 181*b1cdbd2cSJim Jagielski DATE {SQL_NEW_KEYWORD(SQL_TOKEN_DATE); } 182*b1cdbd2cSJim Jagielski DATEDIFF {SQL_NEW_KEYWORD(SQL_TOKEN_DATEDIFF); } 183*b1cdbd2cSJim Jagielski DATEVALUE {SQL_NEW_KEYWORD(SQL_TOKEN_DATEVALUE); } 184*b1cdbd2cSJim Jagielski DAY {SQL_NEW_KEYWORD(SQL_TOKEN_DAY); } 185*b1cdbd2cSJim Jagielski DAYNAME {SQL_NEW_KEYWORD(SQL_TOKEN_DAYNAME); } 186*b1cdbd2cSJim Jagielski DAYOFMONTH {SQL_NEW_KEYWORD(SQL_TOKEN_DAYOFMONTH); } 187*b1cdbd2cSJim Jagielski DAYOFWEEK {SQL_NEW_KEYWORD(SQL_TOKEN_DAYOFWEEK); } 188*b1cdbd2cSJim Jagielski DAYOFYEAR {SQL_NEW_KEYWORD(SQL_TOKEN_DAYOFYEAR); } 189*b1cdbd2cSJim Jagielski DEC {SQL_NEW_KEYWORD(SQL_TOKEN_DEC); } 190*b1cdbd2cSJim Jagielski DECIMAL {SQL_NEW_KEYWORD(SQL_TOKEN_DECIMAL); } 191*b1cdbd2cSJim Jagielski DECLARE {SQL_NEW_KEYWORD(SQL_TOKEN_DECLARE); } 192*b1cdbd2cSJim Jagielski DEFAULT {SQL_NEW_KEYWORD(SQL_TOKEN_DEFAULT); } 193*b1cdbd2cSJim Jagielski DEGREES {SQL_NEW_KEYWORD(SQL_TOKEN_DEGREES); } 194*b1cdbd2cSJim Jagielski DELETE {SQL_NEW_KEYWORD(SQL_TOKEN_DELETE); } 195*b1cdbd2cSJim Jagielski DENSE_RANK {SQL_NEW_KEYWORD(SQL_TOKEN_DENSE_RANK); } 196*b1cdbd2cSJim Jagielski DESC {SQL_NEW_KEYWORD(SQL_TOKEN_DESC); } 197*b1cdbd2cSJim Jagielski DIFFERENCE {SQL_NEW_KEYWORD(SQL_TOKEN_DIFFERENCE); } 198*b1cdbd2cSJim Jagielski DISTINCT {SQL_NEW_KEYWORD(SQL_TOKEN_DISTINCT); } 199*b1cdbd2cSJim Jagielski DOUBLE {SQL_NEW_KEYWORD(SQL_TOKEN_DOUBLE); } 200*b1cdbd2cSJim Jagielski DROP {SQL_NEW_KEYWORD(SQL_TOKEN_DROP); } 201*b1cdbd2cSJim Jagielski 202*b1cdbd2cSJim Jagielski EACH {SQL_NEW_KEYWORD(SQL_TOKEN_EACH); } 203*b1cdbd2cSJim Jagielski ELSE {SQL_NEW_KEYWORD(SQL_TOKEN_ELSE); } 204*b1cdbd2cSJim Jagielski END {SQL_NEW_KEYWORD(SQL_TOKEN_END); } 205*b1cdbd2cSJim Jagielski EVERY {SQL_NEW_KEYWORD(SQL_TOKEN_EVERY); } 206*b1cdbd2cSJim Jagielski ESCAPE {SQL_NEW_KEYWORD(SQL_TOKEN_ESCAPE); } 207*b1cdbd2cSJim Jagielski EXCEPT {SQL_NEW_KEYWORD(SQL_TOKEN_EXCEPT); } 208*b1cdbd2cSJim Jagielski EXCLUDE {SQL_NEW_KEYWORD(SQL_TOKEN_EXCLUDE); } 209*b1cdbd2cSJim Jagielski EXISTS {SQL_NEW_KEYWORD(SQL_TOKEN_EXISTS); } 210*b1cdbd2cSJim Jagielski EXP {SQL_NEW_KEYWORD(SQL_TOKEN_EXP); } 211*b1cdbd2cSJim Jagielski EXTRACT {SQL_NEW_KEYWORD(SQL_TOKEN_EXTRACT); } 212*b1cdbd2cSJim Jagielski 213*b1cdbd2cSJim Jagielski FALSE {SQL_NEW_KEYWORD(SQL_TOKEN_FALSE); } 214*b1cdbd2cSJim Jagielski FETCH {SQL_NEW_KEYWORD(SQL_TOKEN_FETCH); } 215*b1cdbd2cSJim Jagielski FIRST {SQL_NEW_KEYWORD(SQL_TOKEN_FIRST); } 216*b1cdbd2cSJim Jagielski FIRST_VALUE {SQL_NEW_KEYWORD(SQL_TOKEN_FIRST_VALUE); } 217*b1cdbd2cSJim Jagielski FLOAT {SQL_NEW_KEYWORD(SQL_TOKEN_FLOAT); } 218*b1cdbd2cSJim Jagielski FLOOR {SQL_NEW_KEYWORD(SQL_TOKEN_FLOOR); } 219*b1cdbd2cSJim Jagielski FN {SQL_NEW_KEYWORD(SQL_TOKEN_FN); } 220*b1cdbd2cSJim Jagielski FOLLOWING {SQL_NEW_KEYWORD(SQL_TOKEN_FOLLOWING); } 221*b1cdbd2cSJim Jagielski FOR {SQL_NEW_KEYWORD(SQL_TOKEN_FOR); } 222*b1cdbd2cSJim Jagielski FOREIGN {SQL_NEW_KEYWORD(SQL_TOKEN_FOREIGN); } 223*b1cdbd2cSJim Jagielski FOUND {SQL_NEW_KEYWORD(SQL_TOKEN_FOUND); } 224*b1cdbd2cSJim Jagielski FROM {SQL_NEW_KEYWORD(SQL_TOKEN_FROM); } 225*b1cdbd2cSJim Jagielski FULL {SQL_NEW_KEYWORD(SQL_TOKEN_FULL); } 226*b1cdbd2cSJim Jagielski FUSION {SQL_NEW_KEYWORD(SQL_TOKEN_FUSION); } 227*b1cdbd2cSJim Jagielski 228*b1cdbd2cSJim Jagielski GRANT {SQL_NEW_KEYWORD(SQL_TOKEN_GRANT); } 229*b1cdbd2cSJim Jagielski GROUP {SQL_NEW_KEYWORD(SQL_TOKEN_GROUP); } 230*b1cdbd2cSJim Jagielski 231*b1cdbd2cSJim Jagielski HAVING {SQL_NEW_KEYWORD(SQL_TOKEN_HAVING); } 232*b1cdbd2cSJim Jagielski HOUR {SQL_NEW_KEYWORD(SQL_TOKEN_HOUR); } 233*b1cdbd2cSJim Jagielski 234*b1cdbd2cSJim Jagielski IGNORE {SQL_NEW_KEYWORD(SQL_TOKEN_IGNORE); } 235*b1cdbd2cSJim Jagielski IN {SQL_NEW_KEYWORD(SQL_TOKEN_IN); } 236*b1cdbd2cSJim Jagielski INNER {SQL_NEW_KEYWORD(SQL_TOKEN_INNER); } 237*b1cdbd2cSJim Jagielski INSERT {SQL_NEW_KEYWORD(SQL_TOKEN_INSERT); } 238*b1cdbd2cSJim Jagielski INSTEAD {SQL_NEW_KEYWORD(SQL_TOKEN_INSTEAD); } 239*b1cdbd2cSJim Jagielski INT(EGER)? {SQL_NEW_KEYWORD(SQL_TOKEN_INTEGER); } 240*b1cdbd2cSJim Jagielski INTERSECT {SQL_NEW_KEYWORD(SQL_TOKEN_INTERSECT); } 241*b1cdbd2cSJim Jagielski INTERVAL {SQL_NEW_KEYWORD(SQL_TOKEN_INTERVAL); } 242*b1cdbd2cSJim Jagielski INTERSECTION {SQL_NEW_KEYWORD(SQL_TOKEN_INTERSECTION); } 243*b1cdbd2cSJim Jagielski INTO {SQL_NEW_KEYWORD(SQL_TOKEN_INTO); } 244*b1cdbd2cSJim Jagielski IS {SQL_NEW_KEYWORD(SQL_TOKEN_IS); } 245*b1cdbd2cSJim Jagielski 246*b1cdbd2cSJim Jagielski JOIN {SQL_NEW_KEYWORD(SQL_TOKEN_JOIN); } 247*b1cdbd2cSJim Jagielski 248*b1cdbd2cSJim Jagielski KEY {SQL_NEW_KEYWORD(SQL_TOKEN_KEY); } 249*b1cdbd2cSJim Jagielski 250*b1cdbd2cSJim Jagielski LAG {SQL_NEW_KEYWORD(SQL_TOKEN_LAG); } 251*b1cdbd2cSJim Jagielski LARGE {SQL_NEW_KEYWORD(SQL_TOKEN_LARGE); } 252*b1cdbd2cSJim Jagielski LAST {SQL_NEW_KEYWORD(SQL_TOKEN_LAST); } 253*b1cdbd2cSJim Jagielski LAST_VALUE {SQL_NEW_KEYWORD(SQL_TOKEN_LAST_VALUE); } 254*b1cdbd2cSJim Jagielski LCASE {SQL_NEW_KEYWORD(SQL_TOKEN_LCASE); } 255*b1cdbd2cSJim Jagielski LEAD {SQL_NEW_KEYWORD(SQL_TOKEN_LEAD); } 256*b1cdbd2cSJim Jagielski LEADING {SQL_NEW_KEYWORD(SQL_TOKEN_LEADING); } 257*b1cdbd2cSJim Jagielski LEFT {SQL_NEW_KEYWORD(SQL_TOKEN_LEFT); } 258*b1cdbd2cSJim Jagielski LENGTH {SQL_NEW_KEYWORD(SQL_TOKEN_LENGTH); } 259*b1cdbd2cSJim Jagielski LIKE {SQL_NEW_KEYWORD(SQL_TOKEN_LIKE); } 260*b1cdbd2cSJim Jagielski LIMIT {SQL_NEW_KEYWORD(SQL_TOKEN_LIMIT); } 261*b1cdbd2cSJim Jagielski LN {SQL_NEW_KEYWORD(SQL_TOKEN_LN); } 262*b1cdbd2cSJim Jagielski LOCAL {SQL_NEW_KEYWORD(SQL_TOKEN_LOCAL); } 263*b1cdbd2cSJim Jagielski LOCATE {SQL_NEW_KEYWORD(SQL_TOKEN_LOCATE); } 264*b1cdbd2cSJim Jagielski LOG {SQL_NEW_KEYWORD(SQL_TOKEN_LOG); } 265*b1cdbd2cSJim Jagielski LOGF {SQL_NEW_KEYWORD(SQL_TOKEN_LOGF); } 266*b1cdbd2cSJim Jagielski LOG10 {SQL_NEW_KEYWORD(SQL_TOKEN_LOG10); } 267*b1cdbd2cSJim Jagielski LOWER {SQL_NEW_KEYWORD(SQL_TOKEN_LOWER); } 268*b1cdbd2cSJim Jagielski LTRIM {SQL_NEW_KEYWORD(SQL_TOKEN_LTRIM); } 269*b1cdbd2cSJim Jagielski 270*b1cdbd2cSJim Jagielski MAX {SQL_NEW_KEYWORD(SQL_TOKEN_MAX); } 271*b1cdbd2cSJim Jagielski MIN {SQL_NEW_KEYWORD(SQL_TOKEN_MIN); } 272*b1cdbd2cSJim Jagielski MINUTE {SQL_NEW_KEYWORD(SQL_TOKEN_MINUTE); } 273*b1cdbd2cSJim Jagielski MOD {SQL_NEW_KEYWORD(SQL_TOKEN_MOD); } 274*b1cdbd2cSJim Jagielski MONTH {SQL_NEW_KEYWORD(SQL_TOKEN_MONTH); } 275*b1cdbd2cSJim Jagielski MONTHNAME {SQL_NEW_KEYWORD(SQL_TOKEN_MONTHNAME); } 276*b1cdbd2cSJim Jagielski 277*b1cdbd2cSJim Jagielski NATIONAL {SQL_NEW_KEYWORD(SQL_TOKEN_NATIONAL); } 278*b1cdbd2cSJim Jagielski NATURAL {SQL_NEW_KEYWORD(SQL_TOKEN_NATURAL); } 279*b1cdbd2cSJim Jagielski NCHAR {SQL_NEW_KEYWORD(SQL_TOKEN_NCHAR); } 280*b1cdbd2cSJim Jagielski NCLOB {SQL_NEW_KEYWORD(SQL_TOKEN_NCLOB); } 281*b1cdbd2cSJim Jagielski NEW {SQL_NEW_KEYWORD(SQL_TOKEN_NEW); } 282*b1cdbd2cSJim Jagielski NEXT {SQL_NEW_KEYWORD(SQL_TOKEN_NEXT); } 283*b1cdbd2cSJim Jagielski NO {SQL_NEW_KEYWORD(SQL_TOKEN_NO); } 284*b1cdbd2cSJim Jagielski NOT {SQL_NEW_KEYWORD(SQL_TOKEN_NOT); } 285*b1cdbd2cSJim Jagielski NOW {SQL_NEW_KEYWORD(SQL_TOKEN_NOW); } 286*b1cdbd2cSJim Jagielski NTH_VALUE {SQL_NEW_KEYWORD(SQL_TOKEN_NTH_VALUE); } 287*b1cdbd2cSJim Jagielski NTILE {SQL_NEW_KEYWORD(SQL_TOKEN_NTILE); } 288*b1cdbd2cSJim Jagielski NULL {SQL_NEW_KEYWORD(SQL_TOKEN_NULL); } 289*b1cdbd2cSJim Jagielski NULLIF {SQL_NEW_KEYWORD(SQL_TOKEN_NULLIF); } 290*b1cdbd2cSJim Jagielski NULLS {SQL_NEW_KEYWORD(SQL_TOKEN_NULLS); } 291*b1cdbd2cSJim Jagielski NUMERIC {SQL_NEW_KEYWORD(SQL_TOKEN_NUMERIC); } 292*b1cdbd2cSJim Jagielski 293*b1cdbd2cSJim Jagielski OBJECT {SQL_NEW_KEYWORD(SQL_TOKEN_OBJECT); } 294*b1cdbd2cSJim Jagielski OCTET_LENGTH {SQL_NEW_KEYWORD(SQL_TOKEN_OCTET_LENGTH); } 295*b1cdbd2cSJim Jagielski OF {SQL_NEW_KEYWORD(SQL_TOKEN_OF); } 296*b1cdbd2cSJim Jagielski OFFSET {SQL_NEW_KEYWORD(SQL_TOKEN_OFFSET); } 297*b1cdbd2cSJim Jagielski OJ {SQL_NEW_KEYWORD(SQL_TOKEN_OJ); } 298*b1cdbd2cSJim Jagielski OLD {SQL_NEW_KEYWORD(SQL_TOKEN_OLD); } 299*b1cdbd2cSJim Jagielski ON {SQL_NEW_KEYWORD(SQL_TOKEN_ON); } 300*b1cdbd2cSJim Jagielski ONLY {SQL_NEW_KEYWORD(SQL_TOKEN_ONLY); } 301*b1cdbd2cSJim Jagielski OPTION {SQL_NEW_KEYWORD(SQL_TOKEN_OPTION); } 302*b1cdbd2cSJim Jagielski OR {SQL_NEW_KEYWORD(SQL_TOKEN_OR); } 303*b1cdbd2cSJim Jagielski ORDER {SQL_NEW_KEYWORD(SQL_TOKEN_ORDER); } 304*b1cdbd2cSJim Jagielski OTHERS {SQL_NEW_KEYWORD(SQL_TOKEN_OTHERS); } 305*b1cdbd2cSJim Jagielski OUTER {SQL_NEW_KEYWORD(SQL_TOKEN_OUTER); } 306*b1cdbd2cSJim Jagielski OVER {SQL_NEW_KEYWORD(SQL_TOKEN_OVER); } 307*b1cdbd2cSJim Jagielski 308*b1cdbd2cSJim Jagielski PARTITION {SQL_NEW_KEYWORD(SQL_TOKEN_PARTITION); } 309*b1cdbd2cSJim Jagielski PERCENT_RANK {SQL_NEW_KEYWORD(SQL_TOKEN_PERCENT_RANK); } 310*b1cdbd2cSJim Jagielski PERCENTILE_CONT {SQL_NEW_KEYWORD(SQL_TOKEN_PERCENTILE_CONT); } 311*b1cdbd2cSJim Jagielski PERCENTILE_DISC {SQL_NEW_KEYWORD(SQL_TOKEN_PERCENTILE_DISC); } 312*b1cdbd2cSJim Jagielski PI {SQL_NEW_KEYWORD(SQL_TOKEN_PI); } 313*b1cdbd2cSJim Jagielski POSITION {SQL_NEW_KEYWORD(SQL_TOKEN_POSITION); } 314*b1cdbd2cSJim Jagielski POWER {SQL_NEW_KEYWORD(SQL_TOKEN_POWER); } 315*b1cdbd2cSJim Jagielski PRECEDING {SQL_NEW_KEYWORD(SQL_TOKEN_PRECEDING); } 316*b1cdbd2cSJim Jagielski PRECISION {SQL_NEW_KEYWORD(SQL_TOKEN_PRECISION); } 317*b1cdbd2cSJim Jagielski PRIMARY {SQL_NEW_KEYWORD(SQL_TOKEN_PRIMARY); } 318*b1cdbd2cSJim Jagielski PRIVILEGES {SQL_NEW_KEYWORD(SQL_TOKEN_PRIVILEGES); } 319*b1cdbd2cSJim Jagielski PROCEDURE {SQL_NEW_KEYWORD(SQL_TOKEN_PROCEDURE); } 320*b1cdbd2cSJim Jagielski PUBLIC {SQL_NEW_KEYWORD(SQL_TOKEN_PUBLIC); } 321*b1cdbd2cSJim Jagielski 322*b1cdbd2cSJim Jagielski QUARTER {SQL_NEW_KEYWORD(SQL_TOKEN_QUARTER); } 323*b1cdbd2cSJim Jagielski 324*b1cdbd2cSJim Jagielski RADIANS {SQL_NEW_KEYWORD(SQL_TOKEN_RADIANS); } 325*b1cdbd2cSJim Jagielski RAND {SQL_NEW_KEYWORD(SQL_TOKEN_RAND); } 326*b1cdbd2cSJim Jagielski RANGE {SQL_NEW_KEYWORD(SQL_TOKEN_RANGE); } 327*b1cdbd2cSJim Jagielski RANK {SQL_NEW_KEYWORD(SQL_TOKEN_RANK); } 328*b1cdbd2cSJim Jagielski REAL {SQL_NEW_KEYWORD(SQL_TOKEN_REAL); } 329*b1cdbd2cSJim Jagielski REFERENCES {SQL_NEW_KEYWORD(SQL_TOKEN_REFERENCES); } 330*b1cdbd2cSJim Jagielski REFERENCING {SQL_NEW_KEYWORD(SQL_TOKEN_REFERENCING); } 331*b1cdbd2cSJim Jagielski REPEAT {SQL_NEW_KEYWORD(SQL_TOKEN_REPEAT); } 332*b1cdbd2cSJim Jagielski REPLACE {SQL_NEW_KEYWORD(SQL_TOKEN_REPLACE); } 333*b1cdbd2cSJim Jagielski RESPECT {SQL_NEW_KEYWORD(SQL_TOKEN_RESPECT); } 334*b1cdbd2cSJim Jagielski ROLLBACK {SQL_NEW_KEYWORD(SQL_TOKEN_ROLLBACK); } 335*b1cdbd2cSJim Jagielski ROUND {SQL_NEW_KEYWORD(SQL_TOKEN_ROUND); } 336*b1cdbd2cSJim Jagielski ROUNDMAGIC {SQL_NEW_KEYWORD(SQL_TOKEN_ROUNDMAGIC); } 337*b1cdbd2cSJim Jagielski ROW {SQL_NEW_KEYWORD(SQL_TOKEN_ROW); } 338*b1cdbd2cSJim Jagielski ROWS {SQL_NEW_KEYWORD(SQL_TOKEN_ROWS); } 339*b1cdbd2cSJim Jagielski ROW_NUMBER {SQL_NEW_KEYWORD(SQL_TOKEN_ROW_NUMBER); } 340*b1cdbd2cSJim Jagielski RIGHT {SQL_NEW_KEYWORD(SQL_TOKEN_RIGHT); } 341*b1cdbd2cSJim Jagielski RTRIM {SQL_NEW_KEYWORD(SQL_TOKEN_RTRIM); } 342*b1cdbd2cSJim Jagielski 343*b1cdbd2cSJim Jagielski SCHEMA {SQL_NEW_KEYWORD(SQL_TOKEN_SCHEMA); } 344*b1cdbd2cSJim Jagielski SECOND {SQL_NEW_KEYWORD(SQL_TOKEN_SECOND); } 345*b1cdbd2cSJim Jagielski SELECT {SQL_NEW_KEYWORD(SQL_TOKEN_SELECT); } 346*b1cdbd2cSJim Jagielski SET {SQL_NEW_KEYWORD(SQL_TOKEN_SET); } 347*b1cdbd2cSJim Jagielski SIZE {SQL_NEW_KEYWORD(SQL_TOKEN_SIZE); } 348*b1cdbd2cSJim Jagielski SIGN {SQL_NEW_KEYWORD(SQL_TOKEN_SIGN); } 349*b1cdbd2cSJim Jagielski SIN {SQL_NEW_KEYWORD(SQL_TOKEN_SIN); } 350*b1cdbd2cSJim Jagielski SMALLINT {SQL_NEW_KEYWORD(SQL_TOKEN_SMALLINT); } 351*b1cdbd2cSJim Jagielski SOME {SQL_NEW_KEYWORD(SQL_TOKEN_SOME); } 352*b1cdbd2cSJim Jagielski SOUNDEX {SQL_NEW_KEYWORD(SQL_TOKEN_SOUNDEX); } 353*b1cdbd2cSJim Jagielski SPACE {SQL_NEW_KEYWORD(SQL_TOKEN_SPACE); } 354*b1cdbd2cSJim Jagielski SQRT {SQL_NEW_KEYWORD(SQL_TOKEN_SQRT); } 355*b1cdbd2cSJim Jagielski STDDEV_POP {SQL_NEW_KEYWORD(SQL_TOKEN_STDDEV_POP); } 356*b1cdbd2cSJim Jagielski STDDEV_SAMP {SQL_NEW_KEYWORD(SQL_TOKEN_STDDEV_SAMP); } 357*b1cdbd2cSJim Jagielski STATEMENT {SQL_NEW_KEYWORD(SQL_TOKEN_STATEMENT); } 358*b1cdbd2cSJim Jagielski SUBSTRING {SQL_NEW_KEYWORD(SQL_TOKEN_SUBSTRING); } 359*b1cdbd2cSJim Jagielski SUM {SQL_NEW_KEYWORD(SQL_TOKEN_SUM); } 360*b1cdbd2cSJim Jagielski SESSION_USER {SQL_NEW_KEYWORD(SQL_TOKEN_SESSION_USER); } 361*b1cdbd2cSJim Jagielski SYSTEM_USER {SQL_NEW_KEYWORD(SQL_TOKEN_SYSTEM_USER); } 362*b1cdbd2cSJim Jagielski 363*b1cdbd2cSJim Jagielski TABLE {SQL_NEW_KEYWORD(SQL_TOKEN_TABLE); } 364*b1cdbd2cSJim Jagielski TAN {SQL_NEW_KEYWORD(SQL_TOKEN_TAN); } 365*b1cdbd2cSJim Jagielski THEN {SQL_NEW_KEYWORD(SQL_TOKEN_THEN); } 366*b1cdbd2cSJim Jagielski TIES {SQL_NEW_KEYWORD(SQL_TOKEN_TIES); } 367*b1cdbd2cSJim Jagielski TIME {SQL_NEW_KEYWORD(SQL_TOKEN_TIME); } 368*b1cdbd2cSJim Jagielski TIMESTAMP {SQL_NEW_KEYWORD(SQL_TOKEN_TIMESTAMP); } 369*b1cdbd2cSJim Jagielski TIMESTAMPADD {SQL_NEW_KEYWORD(SQL_TOKEN_TIMESTAMPADD); } 370*b1cdbd2cSJim Jagielski TIMESTAMPDIFF {SQL_NEW_KEYWORD(SQL_TOKEN_TIMESTAMPDIFF); } 371*b1cdbd2cSJim Jagielski TIMEVALUE {SQL_NEW_KEYWORD(SQL_TOKEN_TIMEVALUE); } 372*b1cdbd2cSJim Jagielski TIMEZONE_HOUR {SQL_NEW_KEYWORD(SQL_TOKEN_TIMEZONE_HOUR); } 373*b1cdbd2cSJim Jagielski TIMEZONE_MINUTE {SQL_NEW_KEYWORD(SQL_TOKEN_TIMEZONE_MINUTE); } 374*b1cdbd2cSJim Jagielski TO {SQL_NEW_KEYWORD(SQL_TOKEN_TO); } 375*b1cdbd2cSJim Jagielski TRAILING {SQL_NEW_KEYWORD(SQL_TOKEN_TRAILING); } 376*b1cdbd2cSJim Jagielski TRANSLATE {SQL_NEW_KEYWORD(SQL_TOKEN_TRANSLATE); } 377*b1cdbd2cSJim Jagielski TRIGGER {SQL_NEW_KEYWORD(SQL_TOKEN_TRIGGER); } 378*b1cdbd2cSJim Jagielski TRIM {SQL_NEW_KEYWORD(SQL_TOKEN_TRIM); } 379*b1cdbd2cSJim Jagielski TRUE {SQL_NEW_KEYWORD(SQL_TOKEN_TRUE); } 380*b1cdbd2cSJim Jagielski TRUNCATE {SQL_NEW_KEYWORD(SQL_TOKEN_TRUNCATE); } 381*b1cdbd2cSJim Jagielski TS {SQL_NEW_KEYWORD(SQL_TOKEN_TS); } 382*b1cdbd2cSJim Jagielski T {SQL_NEW_KEYWORD(SQL_TOKEN_T); } 383*b1cdbd2cSJim Jagielski 384*b1cdbd2cSJim Jagielski UCASE {SQL_NEW_KEYWORD(SQL_TOKEN_UCASE); } 385*b1cdbd2cSJim Jagielski UNBOUNDED {SQL_NEW_KEYWORD(SQL_TOKEN_UNBOUNDED); } 386*b1cdbd2cSJim Jagielski UNION {SQL_NEW_KEYWORD(SQL_TOKEN_UNION); } 387*b1cdbd2cSJim Jagielski UNIQUE {SQL_NEW_KEYWORD(SQL_TOKEN_UNIQUE); } 388*b1cdbd2cSJim Jagielski UNKNOWN {SQL_NEW_KEYWORD(SQL_TOKEN_UNKNOWN); } 389*b1cdbd2cSJim Jagielski UPDATE {SQL_NEW_KEYWORD(SQL_TOKEN_UPDATE); } 390*b1cdbd2cSJim Jagielski UPPER {SQL_NEW_KEYWORD(SQL_TOKEN_UPPER); } 391*b1cdbd2cSJim Jagielski USAGE {SQL_NEW_KEYWORD(SQL_TOKEN_USAGE); } 392*b1cdbd2cSJim Jagielski USER {SQL_NEW_KEYWORD(SQL_TOKEN_USER); } 393*b1cdbd2cSJim Jagielski USING {SQL_NEW_KEYWORD(SQL_TOKEN_USING); } 394*b1cdbd2cSJim Jagielski 395*b1cdbd2cSJim Jagielski VARBINARY {SQL_NEW_KEYWORD(SQL_TOKEN_VARBINARY); } 396*b1cdbd2cSJim Jagielski VARCHAR {SQL_NEW_KEYWORD(SQL_TOKEN_VARCHAR); } 397*b1cdbd2cSJim Jagielski VARYING {SQL_NEW_KEYWORD(SQL_TOKEN_VARYING); } 398*b1cdbd2cSJim Jagielski VAR_POP {SQL_NEW_KEYWORD(SQL_TOKEN_VAR_POP); } 399*b1cdbd2cSJim Jagielski VAR_SAMP {SQL_NEW_KEYWORD(SQL_TOKEN_VAR_SAMP); } 400*b1cdbd2cSJim Jagielski VALUE {SQL_NEW_KEYWORD(SQL_TOKEN_VALUE); } 401*b1cdbd2cSJim Jagielski VALUES {SQL_NEW_KEYWORD(SQL_TOKEN_VALUES); } 402*b1cdbd2cSJim Jagielski VIEW {SQL_NEW_KEYWORD(SQL_TOKEN_VIEW); } 403*b1cdbd2cSJim Jagielski 404*b1cdbd2cSJim Jagielski WEEK {SQL_NEW_KEYWORD(SQL_TOKEN_WEEK); } 405*b1cdbd2cSJim Jagielski WHEN {SQL_NEW_KEYWORD(SQL_TOKEN_WHEN); } 406*b1cdbd2cSJim Jagielski WHERE {SQL_NEW_KEYWORD(SQL_TOKEN_WHERE); } 407*b1cdbd2cSJim Jagielski WITH {SQL_NEW_KEYWORD(SQL_TOKEN_WITH); } 408*b1cdbd2cSJim Jagielski WITHIN {SQL_NEW_KEYWORD(SQL_TOKEN_WITHIN); } 409*b1cdbd2cSJim Jagielski WITHOUT {SQL_NEW_KEYWORD(SQL_TOKEN_WITHOUT); } 410*b1cdbd2cSJim Jagielski WORK {SQL_NEW_KEYWORD(SQL_TOKEN_WORK); } 411*b1cdbd2cSJim Jagielski 412*b1cdbd2cSJim Jagielski YEAR {SQL_NEW_KEYWORD(SQL_TOKEN_YEAR); } 413*b1cdbd2cSJim Jagielski 414*b1cdbd2cSJim Jagielski ZONE {SQL_NEW_KEYWORD(SQL_TOKEN_ZONE); } 415*b1cdbd2cSJim Jagielski 416*b1cdbd2cSJim Jagielski "<" { SQL_NEW_NODE(::rtl::OUString(SQLyytext,strlen(SQLyytext),RTL_TEXTENCODING_UTF8), SQL_NODE_LESS);return SQL_LESS;} 417*b1cdbd2cSJim Jagielski ">" { SQL_NEW_NODE(::rtl::OUString(SQLyytext,strlen(SQLyytext),RTL_TEXTENCODING_UTF8), SQL_NODE_GREAT);return SQL_GREAT;} 418*b1cdbd2cSJim Jagielski "=" { SQL_NEW_NODE(::rtl::OUString(SQLyytext,strlen(SQLyytext),RTL_TEXTENCODING_UTF8), SQL_NODE_EQUAL);return SQL_EQUAL;} 419*b1cdbd2cSJim Jagielski "<=" { SQL_NEW_NODE(::rtl::OUString(SQLyytext,strlen(SQLyytext),RTL_TEXTENCODING_UTF8), SQL_NODE_LESSEQ);return SQL_LESSEQ;} 420*b1cdbd2cSJim Jagielski ">=" { SQL_NEW_NODE(::rtl::OUString(SQLyytext,strlen(SQLyytext),RTL_TEXTENCODING_UTF8), SQL_NODE_GREATEQ);return SQL_GREATEQ;} 421*b1cdbd2cSJim Jagielski "<>" { SQL_NEW_NODE(::rtl::OUString(SQLyytext,strlen(SQLyytext),RTL_TEXTENCODING_UTF8), SQL_NODE_NOTEQUAL);return SQL_NOTEQUAL;} 422*b1cdbd2cSJim Jagielski "!=" { SQL_NEW_NODE(::rtl::OUString(SQLyytext,strlen(SQLyytext),RTL_TEXTENCODING_UTF8), SQL_NODE_NOTEQUAL);return SQL_NOTEQUAL;} 423*b1cdbd2cSJim Jagielski "||" { SQL_NEW_NODE(::rtl::OUString(SQLyytext,strlen(SQLyytext),RTL_TEXTENCODING_UTF8), SQL_NODE_CONCAT);return SQL_CONCAT;} 424*b1cdbd2cSJim Jagielski 425*b1cdbd2cSJim Jagielski 426*b1cdbd2cSJim Jagielski [-+*/:(),.;?{}] { return SQLyytext[0]; } 427*b1cdbd2cSJim Jagielski 428*b1cdbd2cSJim Jagielski 429*b1cdbd2cSJim Jagielski <SQL>[A-Za-z\200-\277\300-\337\340-\357\360-\367\370-\373\374-\375][A-Za-z\200-\277\300-\337\340-\357\360-\367\370-\373\374-\375_0-9]* {return gatherName( SQLyytext);} 430*b1cdbd2cSJim Jagielski 431*b1cdbd2cSJim Jagielski <SQL>([0-9]+) | 432*b1cdbd2cSJim Jagielski <SQL>([0-9]+"."[0-9]*) | 433*b1cdbd2cSJim Jagielski <SQL>("."[0-9]*) {SQL_NEW_INTNUM; } 434*b1cdbd2cSJim Jagielski 435*b1cdbd2cSJim Jagielski <SQL>[0-9]+[eE][+-]?[0-9]+ | 436*b1cdbd2cSJim Jagielski <SQL>[0-9]+"."[0-9]*[eE][+-]?[0-9]+ | 437*b1cdbd2cSJim Jagielski <SQL>"."[0-9]*[eE][+-]?[0-9]+ {SQL_NEW_APPROXNUM; } 438*b1cdbd2cSJim Jagielski 439*b1cdbd2cSJim Jagielski <PREDICATE_GER,PREDICATE_ENG,DATE>[A-Za-z\200-\277\300-\337\340-\357\360-\367\370-\373\374-\375][A-Za-z0-9_%.,*?\200-\277\300-\337\340-\357\360-\367\370-\373\374-\375]* {return gatherNamePre(SQLyytext);} 440*b1cdbd2cSJim Jagielski 441*b1cdbd2cSJim Jagielski <PREDICATE_GER,PREDICATE_ENG>([0-9]+) {SQL_NEW_INTNUM; } 442*b1cdbd2cSJim Jagielski <PREDICATE_ENG>([0-9]{1,3}(","[0-9]{3})+) {SQL_NEW_INTNUM; } 443*b1cdbd2cSJim Jagielski <PREDICATE_GER>([0-9]{1,3}("."[0-9]{3})+) {SQL_NEW_INTNUM; } 444*b1cdbd2cSJim Jagielski 445*b1cdbd2cSJim Jagielski <PREDICATE_ENG>([0-9]+"."[0-9]+) | 446*b1cdbd2cSJim Jagielski <PREDICATE_ENG>([0-9]{1,3}(","[0-9]{3})+"."[0-9]+) | 447*b1cdbd2cSJim Jagielski <PREDICATE_ENG>("."[0-9]+) {SQL_NEW_APPROXNUM; } 448*b1cdbd2cSJim Jagielski <PREDICATE_ENG>[0-9]+[eE][+-]?[0-9]+ | 449*b1cdbd2cSJim Jagielski <PREDICATE_ENG>[0-9]+"."[0-9]*[eE][+-]?[0-9]+ | 450*b1cdbd2cSJim Jagielski <PREDICATE_ENG>"."[0-9]*[eE][+-]?[0-9]+ {SQL_NEW_APPROXNUM; } 451*b1cdbd2cSJim Jagielski 452*b1cdbd2cSJim Jagielski <PREDICATE_GER>([0-9]+","[0-9]+) | 453*b1cdbd2cSJim Jagielski <PREDICATE_GER>([0-9]{1,3}("."[0-9]{3})+","[0-9]+) | 454*b1cdbd2cSJim Jagielski <PREDICATE_GER>(","[0-9]+) {SQL_NEW_APPROXNUM; } 455*b1cdbd2cSJim Jagielski <PREDICATE_GER>[0-9]+[eE][+-]?[0-9]+ | 456*b1cdbd2cSJim Jagielski <PREDICATE_GER>[0-9]+","[0-9]*[eE][+-]?[0-9]+ | 457*b1cdbd2cSJim Jagielski <PREDICATE_GER>","[0-9]*[eE][+-]?[0-9]+ {SQL_NEW_APPROXNUM; } 458*b1cdbd2cSJim Jagielski 459*b1cdbd2cSJim Jagielski <PREDICATE_GER,PREDICATE_ENG>[0-9.,][A-Za-z0-9_.,%]* {return gatherNamePre(SQLyytext);} 460*b1cdbd2cSJim Jagielski 461*b1cdbd2cSJim Jagielski <SQL>\" { return gatherString('\"',0); } 462*b1cdbd2cSJim Jagielski <SQL>` { return gatherString('`' ,0); } 463*b1cdbd2cSJim Jagielski 464*b1cdbd2cSJim Jagielski <PREDICATE_GER,PREDICATE_ENG,DATE,SQL>"[" { return gatherString(']' ,0);} 465*b1cdbd2cSJim Jagielski 466*b1cdbd2cSJim Jagielski \' { return gatherString('\'',1); } 467*b1cdbd2cSJim Jagielski 468*b1cdbd2cSJim Jagielski <PREDICATE_GER,PREDICATE_ENG,DATE># { return gatherString('#' ,2); } 469*b1cdbd2cSJim Jagielski 470*b1cdbd2cSJim Jagielski <DATE>[0-9]{1,4}[^ ]*[0-9] | 471*b1cdbd2cSJim Jagielski <DATE>[0-9]{1,4}[^ ]*[0-9][ ][0-9]{1,4}[^ ]*[0-9] { SQL_NEW_DATE; } 472*b1cdbd2cSJim Jagielski 473*b1cdbd2cSJim Jagielski <STRING>["-""+""*""/"":""("")"",""."";""?""{""}"] { return SQLyytext[0]; } /* */ 474*b1cdbd2cSJim Jagielski <STRING>"[" { return gatherString(']' ,0); } 475*b1cdbd2cSJim Jagielski <STRING>[^ ':["?"]* { return gatherNamePre(SQLyytext); } 476*b1cdbd2cSJim Jagielski 477*b1cdbd2cSJim Jagielski \n {} 478*b1cdbd2cSJim Jagielski 479*b1cdbd2cSJim Jagielski [ \t\r]+ {} 480*b1cdbd2cSJim Jagielski 481*b1cdbd2cSJim Jagielski "--".*$ {} 482*b1cdbd2cSJim Jagielski 483*b1cdbd2cSJim Jagielski . {YY_FATAL_ERROR("Invalid symbol"); return SQL_TOKEN_INVALIDSYMBOL;} 484*b1cdbd2cSJim Jagielski 485*b1cdbd2cSJim Jagielski %% 486*b1cdbd2cSJim Jagielski 487*b1cdbd2cSJim Jagielski // Kludge around a bug (well, Posix incompatibility) in flex 2.5.x 488*b1cdbd2cSJim Jagielski // http://bugs.debian.org/cgi-bin/bugreport.cgi?archive=no&bug=189332 489*b1cdbd2cSJim Jagielski #if YY_FLEX_MAJOR_VERSION >= 2 && YY_FLEX_MINOR_VERSION >= 5 490*b1cdbd2cSJim Jagielski 491*b1cdbd2cSJim Jagielski #ifndef YY_FLUSH_BUFFER 492*b1cdbd2cSJim Jagielski #define YY_FLUSH_BUFFER SQLyy_flush_buffer(YY_CURRENT_BUFFER ) 493*b1cdbd2cSJim Jagielski #endif 494*b1cdbd2cSJim Jagielski 495*b1cdbd2cSJim Jagielski #ifndef yytext_ptr 496*b1cdbd2cSJim Jagielski #define yytext_ptr SQLyytext 497*b1cdbd2cSJim Jagielski #endif 498*b1cdbd2cSJim Jagielski 499*b1cdbd2cSJim Jagielski #endif 500*b1cdbd2cSJim Jagielski 501*b1cdbd2cSJim Jagielski // Versions of flex apparently differ in whether input() resp. yyinput() returns 502*b1cdbd2cSJim Jagielski // zero or EOF upon end of file: 503*b1cdbd2cSJim Jagielski inline bool checkeof(int c) { return c == 0 || c == EOF; } 504*b1cdbd2cSJim Jagielski 505*b1cdbd2cSJim Jagielski /* 506*b1cdbd2cSJim Jagielski * Read SQL string literal 507*b1cdbd2cSJim Jagielski * Valid strings: 508*b1cdbd2cSJim Jagielski * '' 'a string' 'quote '' within string' 509*b1cdbd2cSJim Jagielski * "" "a string" "quote "" within string" 510*b1cdbd2cSJim Jagielski * nTyp == 0 -> SQL_NODE_NAME 511*b1cdbd2cSJim Jagielski * nTyp == 1 -> SQL_NODE_STRING 512*b1cdbd2cSJim Jagielski * nTyp == 2 -> SQL_NODE_ACCESS_DATE 513*b1cdbd2cSJim Jagielski */ 514*b1cdbd2cSJim Jagielski sal_Int32 gatherString( sal_Int32 delim, sal_Int32 nTyp) 515*b1cdbd2cSJim Jagielski { 516*b1cdbd2cSJim Jagielski sal_Char ch; 517*b1cdbd2cSJim Jagielski ::rtl::OStringBuffer sBuffer(256); 518*b1cdbd2cSJim Jagielski 519*b1cdbd2cSJim Jagielski while (!checkeof(ch = yyinput())) 520*b1cdbd2cSJim Jagielski { 521*b1cdbd2cSJim Jagielski if (ch == delim) 522*b1cdbd2cSJim Jagielski { 523*b1cdbd2cSJim Jagielski if ((ch = yyinput()) != delim) 524*b1cdbd2cSJim Jagielski { 525*b1cdbd2cSJim Jagielski if (!checkeof(ch)) 526*b1cdbd2cSJim Jagielski unput(ch); 527*b1cdbd2cSJim Jagielski 528*b1cdbd2cSJim Jagielski switch(nTyp) 529*b1cdbd2cSJim Jagielski { 530*b1cdbd2cSJim Jagielski case 0: 531*b1cdbd2cSJim Jagielski SQL_NEW_NODE(::rtl::OStringToOUString(sBuffer.makeStringAndClear(),RTL_TEXTENCODING_UTF8), SQL_NODE_NAME); 532*b1cdbd2cSJim Jagielski return SQL_TOKEN_NAME; 533*b1cdbd2cSJim Jagielski case 1: 534*b1cdbd2cSJim Jagielski SQL_NEW_NODE(::rtl::OStringToOUString(sBuffer.makeStringAndClear(),RTL_TEXTENCODING_UTF8), SQL_NODE_STRING); 535*b1cdbd2cSJim Jagielski return SQL_TOKEN_STRING; 536*b1cdbd2cSJim Jagielski case 2: 537*b1cdbd2cSJim Jagielski SQL_NEW_NODE(::rtl::OStringToOUString(sBuffer.makeStringAndClear(),RTL_TEXTENCODING_UTF8), SQL_NODE_ACCESS_DATE); 538*b1cdbd2cSJim Jagielski return SQL_TOKEN_ACCESS_DATE; 539*b1cdbd2cSJim Jagielski } 540*b1cdbd2cSJim Jagielski } 541*b1cdbd2cSJim Jagielski else 542*b1cdbd2cSJim Jagielski { 543*b1cdbd2cSJim Jagielski sBuffer.append(ch); 544*b1cdbd2cSJim Jagielski } 545*b1cdbd2cSJim Jagielski 546*b1cdbd2cSJim Jagielski } 547*b1cdbd2cSJim Jagielski else if (nTyp != 1 && (ch == '\r' || ch == '\n') ) 548*b1cdbd2cSJim Jagielski break; 549*b1cdbd2cSJim Jagielski else 550*b1cdbd2cSJim Jagielski { 551*b1cdbd2cSJim Jagielski sBuffer.append(ch); 552*b1cdbd2cSJim Jagielski } 553*b1cdbd2cSJim Jagielski } 554*b1cdbd2cSJim Jagielski YY_FATAL_ERROR("Unterminated name string"); 555*b1cdbd2cSJim Jagielski return SQL_TOKEN_INVALIDSYMBOL; 556*b1cdbd2cSJim Jagielski } 557*b1cdbd2cSJim Jagielski 558*b1cdbd2cSJim Jagielski sal_Int32 mapEnumToToken(IParseContext::InternationalKeyCode _eKeyCode ) 559*b1cdbd2cSJim Jagielski { 560*b1cdbd2cSJim Jagielski sal_Int32 nTokenID = 0; 561*b1cdbd2cSJim Jagielski switch( _eKeyCode ) 562*b1cdbd2cSJim Jagielski { 563*b1cdbd2cSJim Jagielski case IParseContext::KEY_LIKE: nTokenID = SQL_TOKEN_LIKE; break; 564*b1cdbd2cSJim Jagielski case IParseContext::KEY_NOT: nTokenID = SQL_TOKEN_NOT; break; 565*b1cdbd2cSJim Jagielski case IParseContext::KEY_NULL: nTokenID = SQL_TOKEN_NULL; break; 566*b1cdbd2cSJim Jagielski case IParseContext::KEY_TRUE: nTokenID = SQL_TOKEN_TRUE; break; 567*b1cdbd2cSJim Jagielski case IParseContext::KEY_FALSE: nTokenID = SQL_TOKEN_FALSE; break; 568*b1cdbd2cSJim Jagielski case IParseContext::KEY_IS: nTokenID = SQL_TOKEN_IS; break; 569*b1cdbd2cSJim Jagielski case IParseContext::KEY_BETWEEN: nTokenID = SQL_TOKEN_BETWEEN; break; 570*b1cdbd2cSJim Jagielski case IParseContext::KEY_OR: nTokenID = SQL_TOKEN_OR; break; 571*b1cdbd2cSJim Jagielski case IParseContext::KEY_AND: nTokenID = SQL_TOKEN_AND; break; 572*b1cdbd2cSJim Jagielski case IParseContext::KEY_AVG: nTokenID = SQL_TOKEN_AVG; break; 573*b1cdbd2cSJim Jagielski case IParseContext::KEY_COUNT: nTokenID = SQL_TOKEN_COUNT; break; 574*b1cdbd2cSJim Jagielski case IParseContext::KEY_MAX: nTokenID = SQL_TOKEN_MAX; break; 575*b1cdbd2cSJim Jagielski case IParseContext::KEY_MIN: nTokenID = SQL_TOKEN_MIN; break; 576*b1cdbd2cSJim Jagielski case IParseContext::KEY_SUM: nTokenID = SQL_TOKEN_SUM; break; 577*b1cdbd2cSJim Jagielski case IParseContext::KEY_EVERY: nTokenID = SQL_TOKEN_EVERY; break; 578*b1cdbd2cSJim Jagielski case IParseContext::KEY_ANY: nTokenID = SQL_TOKEN_ANY; break; 579*b1cdbd2cSJim Jagielski case IParseContext::KEY_SOME: nTokenID = SQL_TOKEN_SOME; break; 580*b1cdbd2cSJim Jagielski case IParseContext::KEY_STDDEV_POP: nTokenID = SQL_TOKEN_STDDEV_POP; break; 581*b1cdbd2cSJim Jagielski case IParseContext::KEY_STDDEV_SAMP: nTokenID = SQL_TOKEN_STDDEV_SAMP; break; 582*b1cdbd2cSJim Jagielski case IParseContext::KEY_VAR_SAMP: nTokenID = SQL_TOKEN_VAR_SAMP; break; 583*b1cdbd2cSJim Jagielski case IParseContext::KEY_VAR_POP: nTokenID = SQL_TOKEN_VAR_POP; break; 584*b1cdbd2cSJim Jagielski case IParseContext::KEY_COLLECT: nTokenID = SQL_TOKEN_COLLECT; break; 585*b1cdbd2cSJim Jagielski case IParseContext::KEY_FUSION: nTokenID = SQL_TOKEN_FUSION; break; 586*b1cdbd2cSJim Jagielski case IParseContext::KEY_INTERSECTION: nTokenID = SQL_TOKEN_INTERSECTION; break; 587*b1cdbd2cSJim Jagielski default: 588*b1cdbd2cSJim Jagielski OSL_ENSURE( false, "mapEnumToToken: unsupported key!" ); 589*b1cdbd2cSJim Jagielski } 590*b1cdbd2cSJim Jagielski return nTokenID; 591*b1cdbd2cSJim Jagielski } 592*b1cdbd2cSJim Jagielski /* 593*b1cdbd2cSJim Jagielski * Read SQL Name literal 594*b1cdbd2cSJim Jagielski * Valid Names or internatioanl keywords: 595*b1cdbd2cSJim Jagielski * As we have international keywords, we test first on them 596*b1cdbd2cSJim Jagielski */ 597*b1cdbd2cSJim Jagielski sal_Int32 gatherName(const sal_Char* text) 598*b1cdbd2cSJim Jagielski { 599*b1cdbd2cSJim Jagielski sal_Int32 nToken; 600*b1cdbd2cSJim Jagielski OSL_ENSURE(xxx_pGLOBAL_SQLSCAN,"You forgot to set the scanner!"); 601*b1cdbd2cSJim Jagielski IParseContext::InternationalKeyCode eKeyCode = xxx_pGLOBAL_SQLSCAN->getInternationalTokenID(text); 602*b1cdbd2cSJim Jagielski switch (eKeyCode) 603*b1cdbd2cSJim Jagielski { 604*b1cdbd2cSJim Jagielski case IParseContext::KEY_LIKE: 605*b1cdbd2cSJim Jagielski case IParseContext::KEY_NOT: 606*b1cdbd2cSJim Jagielski case IParseContext::KEY_NULL: 607*b1cdbd2cSJim Jagielski case IParseContext::KEY_TRUE: 608*b1cdbd2cSJim Jagielski case IParseContext::KEY_FALSE: 609*b1cdbd2cSJim Jagielski case IParseContext::KEY_IS: 610*b1cdbd2cSJim Jagielski case IParseContext::KEY_BETWEEN: 611*b1cdbd2cSJim Jagielski case IParseContext::KEY_OR: 612*b1cdbd2cSJim Jagielski case IParseContext::KEY_AND: 613*b1cdbd2cSJim Jagielski case IParseContext::KEY_COUNT: 614*b1cdbd2cSJim Jagielski case IParseContext::KEY_AVG: 615*b1cdbd2cSJim Jagielski case IParseContext::KEY_MAX: 616*b1cdbd2cSJim Jagielski case IParseContext::KEY_MIN: 617*b1cdbd2cSJim Jagielski case IParseContext::KEY_SUM: 618*b1cdbd2cSJim Jagielski case IParseContext::KEY_EVERY: 619*b1cdbd2cSJim Jagielski case IParseContext::KEY_ANY: 620*b1cdbd2cSJim Jagielski case IParseContext::KEY_SOME: 621*b1cdbd2cSJim Jagielski case IParseContext::KEY_STDDEV_POP: 622*b1cdbd2cSJim Jagielski case IParseContext::KEY_STDDEV_SAMP: 623*b1cdbd2cSJim Jagielski case IParseContext::KEY_VAR_SAMP: 624*b1cdbd2cSJim Jagielski case IParseContext::KEY_VAR_POP: 625*b1cdbd2cSJim Jagielski case IParseContext::KEY_COLLECT: 626*b1cdbd2cSJim Jagielski case IParseContext::KEY_FUSION: 627*b1cdbd2cSJim Jagielski case IParseContext::KEY_INTERSECTION: 628*b1cdbd2cSJim Jagielski nToken = mapEnumToToken(eKeyCode); 629*b1cdbd2cSJim Jagielski SQL_NEW_KEYWORD(nToken); 630*b1cdbd2cSJim Jagielski break; 631*b1cdbd2cSJim Jagielski default: 632*b1cdbd2cSJim Jagielski SQL_NEW_NODE(::rtl::OUString(text,strlen(text),RTL_TEXTENCODING_UTF8), SQL_NODE_NAME); 633*b1cdbd2cSJim Jagielski return SQL_TOKEN_NAME; 634*b1cdbd2cSJim Jagielski } 635*b1cdbd2cSJim Jagielski } 636*b1cdbd2cSJim Jagielski /** 637*b1cdbd2cSJim Jagielski Read SQL Name literal for predicate check 638*b1cdbd2cSJim Jagielski Valid Names or internatioanl keywords: 639*b1cdbd2cSJim Jagielski As we have international keywords, we test first on them 640*b1cdbd2cSJim Jagielski */ 641*b1cdbd2cSJim Jagielski sal_Int32 gatherNamePre(const sal_Char* text) 642*b1cdbd2cSJim Jagielski { 643*b1cdbd2cSJim Jagielski sal_Int32 nToken; 644*b1cdbd2cSJim Jagielski OSL_ENSURE(xxx_pGLOBAL_SQLSCAN,"You forgot to set the scanner!"); 645*b1cdbd2cSJim Jagielski IParseContext::InternationalKeyCode eKeyCode = xxx_pGLOBAL_SQLSCAN->getInternationalTokenID(text); 646*b1cdbd2cSJim Jagielski switch (eKeyCode) 647*b1cdbd2cSJim Jagielski { 648*b1cdbd2cSJim Jagielski case IParseContext::KEY_LIKE: 649*b1cdbd2cSJim Jagielski case IParseContext::KEY_NOT: 650*b1cdbd2cSJim Jagielski case IParseContext::KEY_NULL: 651*b1cdbd2cSJim Jagielski case IParseContext::KEY_TRUE: 652*b1cdbd2cSJim Jagielski case IParseContext::KEY_FALSE: 653*b1cdbd2cSJim Jagielski case IParseContext::KEY_IS: 654*b1cdbd2cSJim Jagielski case IParseContext::KEY_BETWEEN: 655*b1cdbd2cSJim Jagielski case IParseContext::KEY_OR: 656*b1cdbd2cSJim Jagielski case IParseContext::KEY_AND: 657*b1cdbd2cSJim Jagielski case IParseContext::KEY_COUNT: 658*b1cdbd2cSJim Jagielski case IParseContext::KEY_AVG: 659*b1cdbd2cSJim Jagielski case IParseContext::KEY_MAX: 660*b1cdbd2cSJim Jagielski case IParseContext::KEY_MIN: 661*b1cdbd2cSJim Jagielski case IParseContext::KEY_SUM: 662*b1cdbd2cSJim Jagielski case IParseContext::KEY_EVERY: 663*b1cdbd2cSJim Jagielski case IParseContext::KEY_ANY: 664*b1cdbd2cSJim Jagielski case IParseContext::KEY_SOME: 665*b1cdbd2cSJim Jagielski case IParseContext::KEY_STDDEV_POP: 666*b1cdbd2cSJim Jagielski case IParseContext::KEY_STDDEV_SAMP: 667*b1cdbd2cSJim Jagielski case IParseContext::KEY_VAR_SAMP: 668*b1cdbd2cSJim Jagielski case IParseContext::KEY_VAR_POP: 669*b1cdbd2cSJim Jagielski case IParseContext::KEY_COLLECT: 670*b1cdbd2cSJim Jagielski case IParseContext::KEY_FUSION: 671*b1cdbd2cSJim Jagielski case IParseContext::KEY_INTERSECTION: 672*b1cdbd2cSJim Jagielski nToken = mapEnumToToken(eKeyCode); 673*b1cdbd2cSJim Jagielski SQL_NEW_KEYWORD(nToken); 674*b1cdbd2cSJim Jagielski break; 675*b1cdbd2cSJim Jagielski default: 676*b1cdbd2cSJim Jagielski // we need a special handling for parameter 677*b1cdbd2cSJim Jagielski { 678*b1cdbd2cSJim Jagielski ::rtl::OString sStmt = xxx_pGLOBAL_SQLSCAN->getStatement(); 679*b1cdbd2cSJim Jagielski sal_Int32 nLength = strlen(text); 680*b1cdbd2cSJim Jagielski sal_Int32 nPos = xxx_pGLOBAL_SQLSCAN->GetCurrentPos() - nLength - 2; 681*b1cdbd2cSJim Jagielski if (sStmt.getStr()[nPos] == ':') 682*b1cdbd2cSJim Jagielski { 683*b1cdbd2cSJim Jagielski SQL_NEW_NODE(::rtl::OUString(text,nLength,RTL_TEXTENCODING_UTF8), SQL_NODE_NAME); 684*b1cdbd2cSJim Jagielski nToken = SQL_TOKEN_NAME; 685*b1cdbd2cSJim Jagielski } 686*b1cdbd2cSJim Jagielski else 687*b1cdbd2cSJim Jagielski { 688*b1cdbd2cSJim Jagielski SQL_NEW_NODE(::rtl::OUString(text,nLength,RTL_TEXTENCODING_UTF8), SQL_NODE_STRING); 689*b1cdbd2cSJim Jagielski nToken = SQL_TOKEN_STRING; 690*b1cdbd2cSJim Jagielski } 691*b1cdbd2cSJim Jagielski } 692*b1cdbd2cSJim Jagielski } 693*b1cdbd2cSJim Jagielski return nToken; 694*b1cdbd2cSJim Jagielski } 695*b1cdbd2cSJim Jagielski 696*b1cdbd2cSJim Jagielski using namespace connectivity; 697*b1cdbd2cSJim Jagielski 698*b1cdbd2cSJim Jagielski static sal_uInt32 Intl_TokenID[] = 699*b1cdbd2cSJim Jagielski { 700*b1cdbd2cSJim Jagielski SQL_TOKEN_LIKE, SQL_TOKEN_NOT, SQL_TOKEN_NULL, SQL_TOKEN_TRUE, 701*b1cdbd2cSJim Jagielski SQL_TOKEN_FALSE, SQL_TOKEN_IS, SQL_TOKEN_BETWEEN, SQL_TOKEN_OR, 702*b1cdbd2cSJim Jagielski SQL_TOKEN_AND, SQL_TOKEN_AVG, SQL_TOKEN_COUNT, SQL_TOKEN_MAX, 703*b1cdbd2cSJim Jagielski SQL_TOKEN_MIN, SQL_TOKEN_SUM 704*b1cdbd2cSJim Jagielski }; 705*b1cdbd2cSJim Jagielski static bool IN_SQLyyerror; 706*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------ 707*b1cdbd2cSJim Jagielski OSQLScanner::OSQLScanner() 708*b1cdbd2cSJim Jagielski : m_nCurrentPos(0) 709*b1cdbd2cSJim Jagielski , m_bInternational(sal_False) 710*b1cdbd2cSJim Jagielski , m_pContext(NULL) 711*b1cdbd2cSJim Jagielski , m_nRule(0) // 0 is INITIAL 712*b1cdbd2cSJim Jagielski { 713*b1cdbd2cSJim Jagielski IN_SQLyyerror = false; 714*b1cdbd2cSJim Jagielski } 715*b1cdbd2cSJim Jagielski 716*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------ 717*b1cdbd2cSJim Jagielski OSQLScanner::~OSQLScanner() 718*b1cdbd2cSJim Jagielski { 719*b1cdbd2cSJim Jagielski } 720*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------ 721*b1cdbd2cSJim Jagielski void OSQLScanner::SQLyyerror(sal_Char *fmt) 722*b1cdbd2cSJim Jagielski { 723*b1cdbd2cSJim Jagielski 724*b1cdbd2cSJim Jagielski if(IN_SQLyyerror) 725*b1cdbd2cSJim Jagielski return; 726*b1cdbd2cSJim Jagielski IN_SQLyyerror = true; 727*b1cdbd2cSJim Jagielski 728*b1cdbd2cSJim Jagielski OSL_ENSURE(m_pContext, "OSQLScanner::SQLyyerror: No Context set"); 729*b1cdbd2cSJim Jagielski m_sErrorMessage = ::rtl::OUString(fmt,strlen(fmt),RTL_TEXTENCODING_UTF8); 730*b1cdbd2cSJim Jagielski if (m_nCurrentPos < m_sStatement.getLength()) 731*b1cdbd2cSJim Jagielski { 732*b1cdbd2cSJim Jagielski m_sErrorMessage += ::rtl::OUString::createFromAscii(": "); 733*b1cdbd2cSJim Jagielski 734*b1cdbd2cSJim Jagielski ::rtl::OUString aError; 735*b1cdbd2cSJim Jagielski static sal_Int32 BUFFERSIZE = 256; 736*b1cdbd2cSJim Jagielski static sal_Char* Buffer = 0; 737*b1cdbd2cSJim Jagielski if(!Buffer) 738*b1cdbd2cSJim Jagielski Buffer = new sal_Char[BUFFERSIZE]; 739*b1cdbd2cSJim Jagielski 740*b1cdbd2cSJim Jagielski sal_Char *s = Buffer; 741*b1cdbd2cSJim Jagielski sal_Int32 nPos = 1; 742*b1cdbd2cSJim Jagielski sal_Int32 ch = SQLyytext ? (SQLyytext[0] == 0 ? ' ' : SQLyytext[0]): ' '; 743*b1cdbd2cSJim Jagielski *s++ = ch; 744*b1cdbd2cSJim Jagielski while (!checkeof(ch = yyinput())) 745*b1cdbd2cSJim Jagielski { 746*b1cdbd2cSJim Jagielski if (ch == ' ') 747*b1cdbd2cSJim Jagielski { 748*b1cdbd2cSJim Jagielski if ((ch = yyinput()) != ' ') 749*b1cdbd2cSJim Jagielski { 750*b1cdbd2cSJim Jagielski if (!checkeof(ch)) 751*b1cdbd2cSJim Jagielski unput(ch); 752*b1cdbd2cSJim Jagielski } 753*b1cdbd2cSJim Jagielski *s = '\0'; 754*b1cdbd2cSJim Jagielski aError = ::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8); 755*b1cdbd2cSJim Jagielski break; 756*b1cdbd2cSJim Jagielski } 757*b1cdbd2cSJim Jagielski else 758*b1cdbd2cSJim Jagielski { 759*b1cdbd2cSJim Jagielski *s++ = ch; 760*b1cdbd2cSJim Jagielski if (++nPos == BUFFERSIZE) 761*b1cdbd2cSJim Jagielski { 762*b1cdbd2cSJim Jagielski ::rtl::OString aBuf(Buffer); 763*b1cdbd2cSJim Jagielski delete[] Buffer; 764*b1cdbd2cSJim Jagielski BUFFERSIZE *=2; 765*b1cdbd2cSJim Jagielski Buffer = new sal_Char[BUFFERSIZE]; 766*b1cdbd2cSJim Jagielski for(sal_Int32 i=0;i<aBuf.getLength();++i,++Buffer) 767*b1cdbd2cSJim Jagielski *Buffer = aBuf.getStr()[i]; 768*b1cdbd2cSJim Jagielski s = &Buffer[nPos]; 769*b1cdbd2cSJim Jagielski } 770*b1cdbd2cSJim Jagielski } 771*b1cdbd2cSJim Jagielski } 772*b1cdbd2cSJim Jagielski m_sErrorMessage += aError; 773*b1cdbd2cSJim Jagielski delete[] Buffer; 774*b1cdbd2cSJim Jagielski Buffer = NULL; 775*b1cdbd2cSJim Jagielski } 776*b1cdbd2cSJim Jagielski IN_SQLyyerror = false; 777*b1cdbd2cSJim Jagielski YY_FLUSH_BUFFER; 778*b1cdbd2cSJim Jagielski } 779*b1cdbd2cSJim Jagielski 780*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------ 781*b1cdbd2cSJim Jagielski void OSQLScanner::prepareScan(const ::rtl::OUString & rNewStatement, const IParseContext* pContext, sal_Bool bInternational) 782*b1cdbd2cSJim Jagielski { 783*b1cdbd2cSJim Jagielski YY_FLUSH_BUFFER; 784*b1cdbd2cSJim Jagielski BEGIN(m_nRule); 785*b1cdbd2cSJim Jagielski 786*b1cdbd2cSJim Jagielski m_sErrorMessage = ::rtl::OUString(); 787*b1cdbd2cSJim Jagielski m_sStatement = ::rtl::OUStringToOString( rNewStatement, RTL_TEXTENCODING_UTF8); 788*b1cdbd2cSJim Jagielski m_nCurrentPos = 0; 789*b1cdbd2cSJim Jagielski m_bInternational = bInternational; 790*b1cdbd2cSJim Jagielski m_pContext = pContext; 791*b1cdbd2cSJim Jagielski } 792*b1cdbd2cSJim Jagielski 793*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------ 794*b1cdbd2cSJim Jagielski sal_Int32 OSQLScanner::SQLyygetc(void) 795*b1cdbd2cSJim Jagielski { 796*b1cdbd2cSJim Jagielski sal_Int32 nPos = (m_nCurrentPos >= m_sStatement.getLength()) ? -1 : m_sStatement.getStr()[m_nCurrentPos]; 797*b1cdbd2cSJim Jagielski m_nCurrentPos++; 798*b1cdbd2cSJim Jagielski return nPos; 799*b1cdbd2cSJim Jagielski } 800*b1cdbd2cSJim Jagielski 801*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------ 802*b1cdbd2cSJim Jagielski IParseContext::InternationalKeyCode OSQLScanner::getInternationalTokenID(const sal_Char* sToken) const 803*b1cdbd2cSJim Jagielski { 804*b1cdbd2cSJim Jagielski OSL_ENSURE(m_pContext, "OSQLScanner::getInternationalTokenID: No Context set"); 805*b1cdbd2cSJim Jagielski return (m_bInternational) ? m_pContext->getIntlKeyCode(::rtl::OString(sToken) ) : IParseContext::KEY_NONE; 806*b1cdbd2cSJim Jagielski } 807*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------- 808*b1cdbd2cSJim Jagielski sal_Int32 OSQLScanner::GetCurrentRule() const { return m_nRule; } 809*b1cdbd2cSJim Jagielski sal_Int32 OSQLScanner::GetGERRule() const { return PREDICATE_GER; } 810*b1cdbd2cSJim Jagielski sal_Int32 OSQLScanner::GetENGRule() const { return PREDICATE_ENG; } 811*b1cdbd2cSJim Jagielski sal_Int32 OSQLScanner::GetSQLRule() const { return SQL; } 812*b1cdbd2cSJim Jagielski sal_Int32 OSQLScanner::GetDATERule() const { return DATE; } 813*b1cdbd2cSJim Jagielski sal_Int32 OSQLScanner::GetSTRINGRule() const { return STRING; } 814*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------- 815*b1cdbd2cSJim Jagielski void OSQLScanner::setScanner(sal_Bool _bNull) 816*b1cdbd2cSJim Jagielski { 817*b1cdbd2cSJim Jagielski xxx_pGLOBAL_SQLSCAN = _bNull ? NULL : this; 818*b1cdbd2cSJim Jagielski } 819*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------- 820*b1cdbd2cSJim Jagielski sal_Int32 OSQLScanner::SQLlex() 821*b1cdbd2cSJim Jagielski { 822*b1cdbd2cSJim Jagielski return SQLyylex(); 823*b1cdbd2cSJim Jagielski } 824*b1cdbd2cSJim Jagielski 825*b1cdbd2cSJim Jagielski #if defined __SUNPRO_CC 826*b1cdbd2cSJim Jagielski #pragma enable_warn 827*b1cdbd2cSJim Jagielski #elif defined _MSC_VER 828*b1cdbd2cSJim Jagielski #pragma warning(pop) 829*b1cdbd2cSJim Jagielski #endif 830