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