File indexing completed on 2024-12-08 04:17:08

0001 #line 2 "generated/sqlscanner.cpp"
0002 
0003 #line 4 "generated/sqlscanner.cpp"
0004 
0005 #define  YY_INT_ALIGNED short int
0006 
0007 /* A lexical scanner generated by flex */
0008 
0009 #define FLEX_SCANNER
0010 #define YY_FLEX_MAJOR_VERSION 2
0011 #define YY_FLEX_MINOR_VERSION 5
0012 #define YY_FLEX_SUBMINOR_VERSION 37
0013 #if YY_FLEX_SUBMINOR_VERSION > 0
0014 #define FLEX_BETA
0015 #endif
0016 
0017 /* First, we deal with  platform-specific or compiler-specific issues. */
0018 
0019 /* begin standard C headers. */
0020 #include <stdio.h>
0021 #include <string.h>
0022 #include <errno.h>
0023 #include <stdlib.h>
0024 
0025 /* end standard C headers. */
0026 
0027 /* flex integer type definitions */
0028 
0029 #ifndef FLEXINT_H
0030 #define FLEXINT_H
0031 
0032 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
0033 
0034 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
0035 
0036 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
0037  * if you want the limit (max/min) macros for int types.
0038  */
0039 #ifndef __STDC_LIMIT_MACROS
0040 #define __STDC_LIMIT_MACROS 1
0041 #endif
0042 
0043 #include <inttypes.h>
0044 typedef int8_t flex_int8_t;
0045 typedef uint8_t flex_uint8_t;
0046 typedef int16_t flex_int16_t;
0047 typedef uint16_t flex_uint16_t;
0048 typedef int32_t flex_int32_t;
0049 typedef uint32_t flex_uint32_t;
0050 #else
0051 typedef signed char flex_int8_t;
0052 typedef short int flex_int16_t;
0053 typedef int flex_int32_t;
0054 typedef unsigned char flex_uint8_t;
0055 typedef unsigned short int flex_uint16_t;
0056 typedef unsigned int flex_uint32_t;
0057 
0058 /* Limits of integral types. */
0059 #ifndef INT8_MIN
0060 #define INT8_MIN               (-128)
0061 #endif
0062 #ifndef INT16_MIN
0063 #define INT16_MIN              (-32767-1)
0064 #endif
0065 #ifndef INT32_MIN
0066 #define INT32_MIN              (-2147483647-1)
0067 #endif
0068 #ifndef INT8_MAX
0069 #define INT8_MAX               (127)
0070 #endif
0071 #ifndef INT16_MAX
0072 #define INT16_MAX              (32767)
0073 #endif
0074 #ifndef INT32_MAX
0075 #define INT32_MAX              (2147483647)
0076 #endif
0077 #ifndef UINT8_MAX
0078 #define UINT8_MAX              (255U)
0079 #endif
0080 #ifndef UINT16_MAX
0081 #define UINT16_MAX             (65535U)
0082 #endif
0083 #ifndef UINT32_MAX
0084 #define UINT32_MAX             (4294967295U)
0085 #endif
0086 
0087 #endif /* ! C99 */
0088 
0089 #endif /* ! FLEXINT_H */
0090 
0091 #ifdef __cplusplus
0092 
0093 /* The "const" storage-class-modifier is valid. */
0094 #define YY_USE_CONST
0095 
0096 #else   /* ! __cplusplus */
0097 
0098 /* C99 requires __STDC__ to be defined as 1. */
0099 #if defined (__STDC__)
0100 
0101 #define YY_USE_CONST
0102 
0103 #endif  /* defined (__STDC__) */
0104 #endif  /* ! __cplusplus */
0105 
0106 #ifdef YY_USE_CONST
0107 #define yyconst const
0108 #else
0109 #define yyconst
0110 #endif
0111 
0112 /* Returned upon end-of-file. */
0113 #define YY_NULL 0
0114 
0115 /* Promotes a possibly negative, possibly signed char to an unsigned
0116  * integer for use as an array index.  If the signed char is negative,
0117  * we want to instead treat it as an 8-bit unsigned char, hence the
0118  * double cast.
0119  */
0120 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
0121 
0122 /* Enter a start condition.  This macro really ought to take a parameter,
0123  * but we do it the disgusting crufty way forced on us by the ()-less
0124  * definition of BEGIN.
0125  */
0126 #define BEGIN (yy_start) = 1 + 2 *
0127 
0128 /* Translate the current start state into a value that can be later handed
0129  * to BEGIN to return to the state.  The YYSTATE alias is for lex
0130  * compatibility.
0131  */
0132 #define YY_START (((yy_start) - 1) / 2)
0133 #define YYSTATE YY_START
0134 
0135 /* Action number for EOF rule of a given start state. */
0136 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
0137 
0138 /* Special action meaning "start processing a new file". */
0139 #define YY_NEW_FILE yyrestart(yyin  )
0140 
0141 #define YY_END_OF_BUFFER_CHAR 0
0142 
0143 /* Size of default input buffer. */
0144 #ifndef YY_BUF_SIZE
0145 #define YY_BUF_SIZE 16384
0146 #endif
0147 
0148 /* The state buf must be large enough to hold one state per character in the main buffer.
0149  */
0150 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
0151 
0152 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
0153 #define YY_TYPEDEF_YY_BUFFER_STATE
0154 typedef struct yy_buffer_state *YY_BUFFER_STATE;
0155 #endif
0156 
0157 #ifndef YY_TYPEDEF_YY_SIZE_T
0158 #define YY_TYPEDEF_YY_SIZE_T
0159 typedef size_t yy_size_t;
0160 #endif
0161 
0162 extern yy_size_t yyleng;
0163 
0164 extern FILE *yyin, *yyout;
0165 
0166 #define EOB_ACT_CONTINUE_SCAN 0
0167 #define EOB_ACT_END_OF_FILE 1
0168 #define EOB_ACT_LAST_MATCH 2
0169 
0170     #define YY_LESS_LINENO(n)
0171 
0172 /* Return all but the first "n" matched characters back to the input stream. */
0173 #define yyless(n) \
0174     do \
0175         { \
0176         /* Undo effects of setting up yytext. */ \
0177         int yyless_macro_arg = (n); \
0178         YY_LESS_LINENO(yyless_macro_arg);\
0179         *yy_cp = (yy_hold_char); \
0180         YY_RESTORE_YY_MORE_OFFSET \
0181         (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
0182         YY_DO_BEFORE_ACTION; /* set up yytext again */ \
0183         } \
0184     while ( 0 )
0185 
0186 #define unput(c) yyunput( c, (yytext_ptr)  )
0187 
0188 #ifndef YY_STRUCT_YY_BUFFER_STATE
0189 #define YY_STRUCT_YY_BUFFER_STATE
0190 struct yy_buffer_state
0191     {
0192     FILE *yy_input_file;
0193 
0194     char *yy_ch_buf;        /* input buffer */
0195     char *yy_buf_pos;       /* current position in input buffer */
0196 
0197     /* Size of input buffer in bytes, not including room for EOB
0198      * characters.
0199      */
0200     int yy_buf_size;
0201 
0202     /* Number of characters read into yy_ch_buf, not including EOB
0203      * characters.
0204      */
0205     int yy_n_chars;
0206 
0207     /* Whether we "own" the buffer - i.e., we know we created it,
0208      * and can realloc() it to grow it, and should free() it to
0209      * delete it.
0210      */
0211     int yy_is_our_buffer;
0212 
0213     /* Whether this is an "interactive" input source; if so, and
0214      * if we're using stdio for input, then we want to use getc()
0215      * instead of fread(), to make sure we stop fetching input after
0216      * each newline.
0217      */
0218     int yy_is_interactive;
0219 
0220     /* Whether we're considered to be at the beginning of a line.
0221      * If so, '^' rules will be active on the next match, otherwise
0222      * not.
0223      */
0224     int yy_at_bol;
0225 
0226     int yy_bs_lineno; /**< The line count. */
0227     int yy_bs_column; /**< The column count. */
0228 
0229     /* Whether to try to fill the input buffer when we reach the
0230      * end of it.
0231      */
0232     int yy_fill_buffer;
0233 
0234     int yy_buffer_status;
0235 
0236 #define YY_BUFFER_NEW 0
0237 #define YY_BUFFER_NORMAL 1
0238     /* When an EOF's been seen but there's still some text to process
0239      * then we mark the buffer as YY_EOF_PENDING, to indicate that we
0240      * shouldn't try reading from the input source any more.  We might
0241      * still have a bunch of tokens to match, though, because of
0242      * possible backing-up.
0243      *
0244      * When we actually see the EOF, we change the status to "new"
0245      * (via yyrestart()), so that the user can continue scanning by
0246      * just pointing yyin at a new input file.
0247      */
0248 #define YY_BUFFER_EOF_PENDING 2
0249 
0250     };
0251 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
0252 
0253 /* Stack of input buffers. */
0254 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
0255 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
0256 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
0257 
0258 /* We provide macros for accessing buffer states in case in the
0259  * future we want to put the buffer states in a more general
0260  * "scanner state".
0261  *
0262  * Returns the top of the stack, or NULL.
0263  */
0264 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
0265                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
0266                           : NULL)
0267 
0268 /* Same as previous macro, but useful when we know that the buffer stack is not
0269  * NULL or when we need an lvalue. For internal use only.
0270  */
0271 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
0272 
0273 /* yy_hold_char holds the character lost when yytext is formed. */
0274 static char yy_hold_char;
0275 static int yy_n_chars;      /* number of characters read into yy_ch_buf */
0276 yy_size_t yyleng;
0277 
0278 /* Points to current character in buffer. */
0279 static char *yy_c_buf_p = (char *) 0;
0280 static int yy_init = 0;     /* whether we need to initialize */
0281 static int yy_start = 0;    /* start state number */
0282 
0283 /* Flag which is used to allow yywrap()'s to do buffer switches
0284  * instead of setting up a fresh yyin.  A bit of a hack ...
0285  */
0286 static int yy_did_buffer_switch_on_eof;
0287 
0288 void yyrestart (FILE *input_file  );
0289 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
0290 YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
0291 void yy_delete_buffer (YY_BUFFER_STATE b  );
0292 void yy_flush_buffer (YY_BUFFER_STATE b  );
0293 void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
0294 void yypop_buffer_state (void );
0295 
0296 static void yyensure_buffer_stack (void );
0297 static void yy_load_buffer_state (void );
0298 static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
0299 
0300 #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
0301 
0302 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
0303 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
0304 YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
0305 
0306 void *yyalloc (yy_size_t  );
0307 void *yyrealloc (void *,yy_size_t  );
0308 void yyfree (void *  );
0309 
0310 #define yy_new_buffer yy_create_buffer
0311 
0312 #define yy_set_interactive(is_interactive) \
0313     { \
0314     if ( ! YY_CURRENT_BUFFER ){ \
0315         yyensure_buffer_stack (); \
0316         YY_CURRENT_BUFFER_LVALUE =    \
0317             yy_create_buffer(yyin,YY_BUF_SIZE ); \
0318     } \
0319     YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
0320     }
0321 
0322 #define yy_set_bol(at_bol) \
0323     { \
0324     if ( ! YY_CURRENT_BUFFER ){\
0325         yyensure_buffer_stack (); \
0326         YY_CURRENT_BUFFER_LVALUE =    \
0327             yy_create_buffer(yyin,YY_BUF_SIZE ); \
0328     } \
0329     YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
0330     }
0331 
0332 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
0333 
0334 /* Begin user sect3 */
0335 
0336 #define yywrap() 1
0337 #define YY_SKIP_YYWRAP
0338 
0339 typedef unsigned char YY_CHAR;
0340 
0341 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
0342 
0343 typedef int yy_state_type;
0344 
0345 extern int yylineno;
0346 
0347 int yylineno = 1;
0348 
0349 extern char *yytext;
0350 #define yytext_ptr yytext
0351 
0352 static yy_state_type yy_get_previous_state (void );
0353 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
0354 static int yy_get_next_buffer (void );
0355 static void yy_fatal_error (yyconst char msg[]  );
0356 
0357 /* Done after the current pattern has been matched and before the
0358  * corresponding action - sets up yytext.
0359  */
0360 #define YY_DO_BEFORE_ACTION \
0361     (yytext_ptr) = yy_bp; \
0362     yyleng = (size_t) (yy_cp - yy_bp); \
0363     (yy_hold_char) = *yy_cp; \
0364     *yy_cp = '\0'; \
0365     (yy_c_buf_p) = yy_cp;
0366 
0367 #define YY_NUM_RULES 57
0368 #define YY_END_OF_BUFFER 58
0369 /* This struct is not used in this scanner,
0370    but its presence is necessary. */
0371 struct yy_trans_info
0372     {
0373     flex_int32_t yy_verify;
0374     flex_int32_t yy_nxt;
0375     };
0376 static yyconst flex_int16_t yy_accept[195] =
0377     {   0,
0378         0,    0,    0,    0,   58,   56,   54,   54,   55,   56,
0379         9,   55,   55,   56,   55,    7,   55,   55,   55,   52,
0380        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
0381        52,   52,   52,   52,   52,   55,   55,   16,   12,   57,
0382        15,   10,   11,   16,   16,   54,    2,    0,   51,    0,
0383        17,    0,   51,    0,    8,    8,    7,   52,   40,    4,
0384         1,    3,    5,   41,   52,   18,   52,   48,   52,   52,
0385        52,   52,    6,   33,   52,   52,   52,   52,   52,   37,
0386        38,   52,   52,   52,   52,   52,   52,   52,    0,   39,
0387        12,    0,    0,   11,   13,   14,   51,   51,    8,   17,
0388 
0389        49,   52,   52,   52,   52,   52,   52,    0,   52,   52,
0390        52,   32,   52,   52,   52,   52,   52,   52,   52,   52,
0391        42,   53,   52,   52,   50,   52,   20,   52,    0,   22,
0392        23,   24,    0,   34,   52,   52,   52,   52,   52,   35,
0393        52,   52,   52,   36,   52,    0,    0,    0,    0,    0,
0394        47,   43,   52,   52,   45,   46,   52,   19,   52,    0,
0395         0,    0,    0,    0,   44,   52,   26,   21,    0,   31,
0396         0,    0,    0,   52,    0,    0,   25,    0,    0,    0,
0397         0,    0,    0,    0,    0,    0,   29,   30,   27,    0,
0398         0,    0,   28,    0
0399 
0400     } ;
0401 
0402 static yyconst flex_int32_t yy_ec[256] =
0403     {   0,
0404         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
0405         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0406         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0407         1,    2,    4,    5,    6,    1,    7,    8,    9,    7,
0408         7,    7,   10,    7,   10,   11,   10,   12,   12,   12,
0409        12,   12,   12,   12,   12,   12,   12,   10,    7,   13,
0410        14,   15,    7,    7,   16,   17,   18,   19,   20,   21,
0411        22,   23,   24,   25,   26,   27,   28,   29,   30,   31,
0412        32,   33,   34,   35,   36,   32,   37,   38,   39,   32,
0413        40,   41,   42,    7,   32,    7,   43,   44,   45,   46,
0414 
0415        47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
0416        57,   58,   32,   59,   60,   61,   62,   32,   63,   64,
0417        65,   32,    1,   66,    1,    7,    1,    1,    1,    1,
0418         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0419         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0420         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0421         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0422         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0423         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0424         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0425 
0426         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0427         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0428         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0429         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0430         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0431         1,    1,    1,    1,    1
0432     } ;
0433 
0434 static yyconst flex_int32_t yy_meta[67] =
0435     {   0,
0436         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0437         2,    2,    1,    1,    1,    2,    2,    2,    2,    2,
0438         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
0439         2,    2,    2,    2,    2,    2,    2,    2,    2,    3,
0440         1,    3,    2,    2,    2,    2,    2,    2,    2,    2,
0441         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
0442         2,    2,    2,    2,    2,    1
0443     } ;
0444 
0445 static yyconst flex_int16_t yy_base[200] =
0446     {   0,
0447         0,    0,   65,   70,  488,  516,   67,   76,  473,   69,
0448       516,  516,  478,   74,  473,   73,   74,  470,   76,   82,
0449        83,   81,   84,  472,   86,   98,   87,  113,  123,  110,
0450        96,  141,  130,  144,  138,    0,  416,  516,  155,  516,
0451       516,  516,  469,   71,  107,  103,  516,   95,  475,  146,
0452       516,  109,  470,  161,  464,  463,  163,  463,  516,  516,
0453       516,  516,  516,  516,  165,  161,  166,  462,  170,  171,
0454       172,  167,  180,  201,  185,  189,  182,  203,  196,  461,
0455       209,  207,  205,  211,  208,  210,  222,  229,  429,  516,
0456       232,  202,  215,  458,  516,  516,  239,  236,  457,  457,
0457 
0458       456,  236,  238,  240,  242,  250,  254,  265,  260,  249,
0459       271,  284,  281,  286,  289,  287,  272,  282,  293,  292,
0460       455,  516,  300,  303,  453,  306,  452,  308,  292,  451,
0461       447,  445,  329,  443,  326,  313,  332,  318,  341,  442,
0462       347,  349,  351,  437,  355,  280,  328,  345,  344,  346,
0463       432,  424,  365,  368,  333,  331,  375,  316,  370,  388,
0464       351,  345,  361,  365,  268,  388,  145,  114,  405,  516,
0465       364,  389,  386,  413,  376,  393,  516,  390,  416,  395,
0466       403,  409,  398,  403,  403,  406,  516,  516,  516,  439,
0467       443,  403,  516,  516,  504,  507,  510,  110,  513
0468 
0469     } ;
0470 
0471 static yyconst flex_int16_t yy_def[200] =
0472     {   0,
0473       194,    1,  195,  195,  194,  194,  194,  194,  194,  196,
0474       194,  194,  194,  197,  194,  198,  194,  194,  194,  198,
0475       198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
0476       198,  198,  198,  198,  198,  199,  194,  194,  194,  194,
0477       194,  194,  194,  194,  194,  194,  194,  196,  194,  196,
0478       194,  197,  194,  197,  194,  194,  198,  198,  194,  194,
0479       194,  194,  194,  194,  198,  198,  198,  198,  198,  198,
0480       198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
0481       198,  198,  198,  198,  198,  198,  198,  198,  199,  194,
0482       194,  194,  194,  194,  194,  194,  196,  197,  194,  198,
0483 
0484       198,  198,  198,  198,  198,  198,  198,  194,  198,  198,
0485       198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
0486       198,  194,  198,  198,  198,  198,  198,  198,  194,  198,
0487       198,  198,  194,  198,  198,  198,  198,  198,  198,  198,
0488       198,  198,  198,  198,  198,  194,  194,  194,  194,  194,
0489       198,  198,  198,  198,  198,  198,  198,  198,  198,  194,
0490       194,  194,  194,  194,  198,  198,  198,  198,  194,  194,
0491       194,  194,  194,  198,  194,  194,  194,  194,  194,  194,
0492       194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
0493       194,  194,  194,    0,  194,  194,  194,  194,  194
0494 
0495     } ;
0496 
0497 static yyconst flex_int16_t yy_nxt[583] =
0498     {   0,
0499         6,    7,    8,    9,   10,   11,   12,   13,   14,   12,
0500        15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
0501        25,   24,   24,   26,   27,   24,   28,   24,   29,   30,
0502        24,   24,   31,   32,   33,   24,   34,   35,   24,   36,
0503         6,   12,   20,   21,   22,   23,   24,   25,   24,   24,
0504        26,   27,   24,   28,   24,   29,   30,   24,   31,   32,
0505        33,   24,   34,   35,   24,   37,   39,   40,   46,   46,
0506        41,   39,   40,   49,   42,   41,   43,   46,   46,   42,
0507        44,   43,   53,   56,   57,   44,   59,   60,   61,   63,
0508        64,  194,  194,  194,  194,   45,  194,  194,   95,   49,
0509 
0510        45,   71,   67,   70,   46,   46,  194,   44,  194,   50,
0511        65,   58,   44,   69,   54,   66,   75,   53,   72,   82,
0512       194,   68,   45,  194,  194,   95,   73,   45,   71,   67,
0513        70,   74,   76,  194,   96,   50,   77,   65,   80,   69,
0514       194,   66,   81,   75,   72,   85,   82,   68,  194,   54,
0515        97,  194,   78,   73,  194,  194,   91,   74,   79,   76,
0516        83,   96,   86,   77,   84,   80,   87,   88,   81,   98,
0517        92,  194,   85,   56,   57,  194,  194,  194,  101,   78,
0518       194,  194,  194,  100,   79,   93,   50,   83,   86,  103,
0519       194,   84,  194,   87,   88,  194,  106,   92,  105,  194,
0520 
0521       102,   54,  108,  108,  104,  101,  194,  111,  109,  110,
0522       100,  194,   93,  194,  107,  194,  103,  194,  194,  194,
0523       194,  194,  113,  106,  118,  105,  102,  114,  115,   95,
0524       104,  116,  194,   91,  111,  109,  110,  112,  117,  194,
0525       107,  120,   96,   97,   98,  119,  194,   92,  194,  113,
0526       194,  118,  194,  124,  114,  115,   95,  125,  116,  194,
0527       194,  121,   93,  112,  194,  117,  108,  108,  120,   96,
0528       194,  119,  123,  128,   92,  126,   54,  127,  194,   50,
0529       124,  194,  194,  131,  125,  133,  133,  121,  130,   93,
0530       132,  194,  194,  129,  194,  138,  194,  194,  123,  194,
0531 
0532       128,  126,  194,  194,  127,  135,  137,  134,  139,  131,
0533       194,  136,  140,  194,  160,  130,  194,  132,  194,  142,
0534       129,  146,  138,  194,  141,  144,  194,  147,  194,  145,
0535       133,  133,  135,  137,  134,  139,  194,  143,  136,  140,
0536       160,  194,  194,  194,  154,  148,  142,  152,  146,  153,
0537       141,  194,  144,  147,  161,  149,  145,  194,  151,  194,
0538       155,  194,  150,  143,  162,  194,  156,  163,  157,  164,
0539       158,  154,  148,  152,  159,  194,  153,  170,  194,  171,
0540       194,  161,  149,  166,  151,  194,  172,  155,  150,  169,
0541       169,  162,  173,  156,  163,  157,  164,  158,  194,  165,
0542 
0543       176,  159,  168,  167,  170,  171,  169,  169,  177,  178,
0544       166,  180,  181,  172,  179,  179,  182,  179,  179,  173,
0545       174,  184,  185,  194,  186,  165,  176,  187,  168,  188,
0546       167,  189,  193,  175,  194,  177,  178,  180,  190,  181,
0547       191,  191,  194,  182,  191,  191,  174,  194,  184,  185,
0548       183,  186,  194,  194,  187,  194,  188,  194,  189,  193,
0549       175,  194,  194,  194,  190,  194,  194,  194,   99,   94,
0550       122,  194,  194,  194,   99,   55,  183,  192,   52,   48,
0551        94,   90,  194,   62,   55,   51,   47,  194,  194,  194,
0552       194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
0553 
0554       194,  194,  194,  192,   38,   38,   38,   48,   48,   48,
0555        52,   52,   52,   89,   89,    5,  194,  194,  194,  194,
0556       194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
0557       194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
0558       194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
0559       194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
0560       194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
0561       194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
0562       194,  194
0563     } ;
0564 
0565 static yyconst flex_int16_t yy_chk[583] =
0566     {   0,
0567         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0568         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0569         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0570         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0571         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0572         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
0573         1,    1,    1,    1,    1,    1,    3,    3,    7,    7,
0574         3,    4,    4,   10,    3,    4,    3,    8,    8,    4,
0575         3,    4,   14,   16,   16,    4,   17,   17,   17,   19,
0576        19,   22,   20,   21,   23,    3,   25,   27,   44,   48,
0577 
0578         4,   25,   21,   23,   46,   46,   31,    3,   26,   10,
0579        20,  198,    4,   22,   14,   20,   27,   52,   25,   31,
0580        30,   21,    3,   28,  168,   44,   26,    4,   25,   21,
0581        23,   26,   28,   29,   45,   48,   28,   20,   30,   22,
0582        33,   20,   30,   27,   25,   33,   31,   21,   35,   52,
0583        50,   32,   29,   26,   34,  167,   39,   26,   29,   28,
0584        32,   45,   33,   28,   32,   30,   34,   35,   30,   54,
0585        39,   66,   33,   57,   57,   65,   67,   72,   66,   29,
0586        69,   70,   71,   65,   29,   39,   50,   32,   33,   69,
0587        73,   32,   77,   34,   35,   75,   72,   39,   71,   76,
0588 
0589        67,   54,   74,   74,   70,   66,   79,   77,   75,   76,
0590        65,   74,   39,   78,   73,   83,   69,   82,   85,   81,
0591        86,   84,   79,   72,   85,   71,   67,   81,   82,   92,
0592        70,   83,   87,   91,   77,   75,   76,   78,   84,   88,
0593        73,   87,   93,   97,   98,   86,  102,   91,  103,   79,
0594       104,   85,  105,  103,   81,   82,   92,  104,   83,  110,
0595       106,   88,   91,   78,  107,   84,  108,  108,   87,   93,
0596       109,   86,  102,  107,   91,  105,   98,  106,  165,   97,
0597       103,  111,  117,  110,  104,  112,  112,   88,  109,   91,
0598       111,  113,  118,  108,  112,  117,  114,  116,  102,  115,
0599 
0600       107,  105,  120,  119,  106,  114,  116,  113,  118,  110,
0601       123,  115,  119,  124,  146,  109,  126,  111,  128,  123,
0602       108,  129,  117,  136,  120,  126,  158,  129,  138,  128,
0603       133,  133,  114,  116,  113,  118,  135,  124,  115,  119,
0604       146,  156,  137,  155,  138,  133,  123,  136,  129,  137,
0605       120,  139,  126,  129,  147,  133,  128,  141,  135,  142,
0606       139,  143,  133,  124,  148,  145,  141,  149,  142,  150,
0607       143,  138,  133,  136,  145,  153,  137,  161,  154,  162,
0608       159,  147,  133,  154,  135,  157,  163,  139,  133,  160,
0609       160,  148,  164,  141,  149,  142,  150,  143,  166,  153,
0610 
0611       171,  145,  159,  157,  161,  162,  169,  169,  172,  173,
0612       154,  175,  176,  163,  174,  174,  178,  179,  179,  164,
0613       166,  180,  181,  174,  182,  153,  171,  183,  159,  184,
0614       157,  185,  192,  169,  152,  172,  173,  175,  186,  176,
0615       190,  190,  151,  178,  191,  191,  166,  144,  180,  181,
0616       179,  182,  140,  134,  183,  132,  184,  131,  185,  192,
0617       169,  130,  127,  125,  186,  121,  101,  100,   99,   94,
0618        89,   80,   68,   58,   56,   55,  179,  191,   53,   49,
0619        43,   37,   24,   18,   15,   13,    9,    5,    0,    0,
0620         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
0621 
0622         0,    0,    0,  191,  195,  195,  195,  196,  196,  196,
0623       197,  197,  197,  199,  199,  194,  194,  194,  194,  194,
0624       194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
0625       194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
0626       194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
0627       194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
0628       194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
0629       194,  194,  194,  194,  194,  194,  194,  194,  194,  194,
0630       194,  194
0631     } ;
0632 
0633 static yy_state_type yy_last_accepting_state;
0634 static char *yy_last_accepting_cpos;
0635 
0636 extern int yy_flex_debug;
0637 int yy_flex_debug = 0;
0638 
0639 /* The intent behind this definition is that it'll catch
0640  * any uses of REJECT which flex missed.
0641  */
0642 #define REJECT reject_used_but_not_detected
0643 #define yymore() yymore_used_but_not_detected
0644 #define YY_MORE_ADJ 0
0645 #define YY_RESTORE_YY_MORE_OFFSET
0646 char *yytext;
0647 #line 1 "KDbSqlScanner.l"
0648 /* This file is part of the KDE project
0649    Copyright (C) 2004 Lucijan Busch <lucijan@kde.org>
0650    Copyright (C) 2004-2018 Jarosław Staniek <staniek@kde.org>
0651 
0652    This library is free software; you can redistribute it and/or
0653    modify it under the terms of the GNU Library General Public
0654    License as published by the Free Software Foundation; either
0655    version 2 of the License, or (at your option) any later version.
0656 
0657    This library is distributed in the hope that it will be useful,
0658    but WITHOUT ANY WARRANTY; without even the implied warranty of
0659    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0660    Library General Public License for more details.
0661 
0662    You should have received a copy of the GNU Library General Public License
0663    along with this library; see the file COPYING.LIB.  If not, write to
0664    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0665    Boston, MA 02110-1301, USA.
0666 */
0667 #line 22 "KDbSqlScanner.l"
0668 #include "sqlparser.h"
0669 #include "KDb.h"
0670 #include "KDbExpression.h"
0671 #include "KDbParser.h"
0672 #include "KDbSqlTypes.h"
0673 #include "kdb_debug.h"
0674 
0675 extern int globalCurrentPos;
0676 extern QByteArray globalToken;
0677 
0678 #define YY_NO_UNPUT
0679 #define ECOUNT globalCurrentPos += yyleng; globalToken = yytext
0680 
0681 extern void setError(const QString& errDesc);
0682 extern void setError(const QString& errName, const QString& errDesc);
0683 
0684 /* Only quotes the input if it does not start with a quote character, otherwise
0685  it would be too hard to read with some fonts. */
0686 static QString maybeQuote(const QString& string)
0687 {
0688     QString first(string.at(0));
0689     if (first == QLatin1Char('\'') || first == QLatin1Char('"') || first == QLatin1Char('`')) {
0690         return string;
0691     }
0692     return QStringLiteral("\"%1\"").arg(string);
0693 }
0694 /* *** Please reflect changes to this file in ../driver_p.cpp *** */
0695 
0696 /*identifier       [a-zA-Z_][a-zA-Z_0-9]* */
0697 /* quoted_identifier (\"[a-zA-Z_0-9]+\") */
0698 #line 699 "generated/sqlscanner.cpp"
0699 
0700 #define INITIAL 0
0701 #define DATE_OR_TIME 1
0702 
0703 #ifndef YY_NO_UNISTD_H
0704 /* Special case for "unistd.h", since it is non-ANSI. We include it way
0705  * down here because we want the user's section 1 to have been scanned first.
0706  * The user has a chance to override it with an option.
0707  */
0708 #include <unistd.h>
0709 #endif
0710 
0711 #ifndef YY_EXTRA_TYPE
0712 #define YY_EXTRA_TYPE void *
0713 #endif
0714 
0715 static int yy_init_globals (void );
0716 
0717 /* Accessor methods to globals.
0718    These are made visible to non-reentrant scanners for convenience. */
0719 
0720 int yylex_destroy (void );
0721 
0722 int yyget_debug (void );
0723 
0724 void yyset_debug (int debug_flag  );
0725 
0726 YY_EXTRA_TYPE yyget_extra (void );
0727 
0728 void yyset_extra (YY_EXTRA_TYPE user_defined  );
0729 
0730 FILE *yyget_in (void );
0731 
0732 void yyset_in  (FILE * in_str  );
0733 
0734 FILE *yyget_out (void );
0735 
0736 void yyset_out  (FILE * out_str  );
0737 
0738 yy_size_t yyget_leng (void );
0739 
0740 char *yyget_text (void );
0741 
0742 int yyget_lineno (void );
0743 
0744 void yyset_lineno (int line_number  );
0745 
0746 /* Macros after this point can all be overridden by user definitions in
0747  * section 1.
0748  */
0749 
0750 #ifndef YY_SKIP_YYWRAP
0751 #ifdef __cplusplus
0752 extern "C" int yywrap (void );
0753 #else
0754 extern int yywrap (void );
0755 #endif
0756 #endif
0757 
0758     static void yyunput (int c,char *buf_ptr  );
0759 
0760 #ifndef yytext_ptr
0761 static void yy_flex_strncpy (char *,yyconst char *,int );
0762 #endif
0763 
0764 #ifdef YY_NEED_STRLEN
0765 static int yy_flex_strlen (yyconst char * );
0766 #endif
0767 
0768 #ifndef YY_NO_INPUT
0769 
0770 #ifdef __cplusplus
0771 static int yyinput (void );
0772 #else
0773 static int input (void );
0774 #endif
0775 
0776 #endif
0777 
0778 /* Amount of stuff to slurp up with each read. */
0779 #ifndef YY_READ_BUF_SIZE
0780 #define YY_READ_BUF_SIZE 8192
0781 #endif
0782 
0783 /* Copy whatever the last rule matched to the standard output. */
0784 #ifndef ECHO
0785 /* This used to be an fputs(), but since the string might contain NUL's,
0786  * we now use fwrite().
0787  */
0788 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
0789 #endif
0790 
0791 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
0792  * is returned in "result".
0793  */
0794 #ifndef YY_INPUT
0795 #define YY_INPUT(buf,result,max_size) \
0796     if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
0797         { \
0798         int c = '*'; \
0799         size_t n; \
0800         for ( n = 0; n < max_size && \
0801                  (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
0802             buf[n] = (char) c; \
0803         if ( c == '\n' ) \
0804             buf[n++] = (char) c; \
0805         if ( c == EOF && ferror( yyin ) ) \
0806             YY_FATAL_ERROR( "input in flex scanner failed" ); \
0807         result = n; \
0808         } \
0809     else \
0810         { \
0811         errno=0; \
0812         while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
0813             { \
0814             if( errno != EINTR) \
0815                 { \
0816                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
0817                 break; \
0818                 } \
0819             errno=0; \
0820             clearerr(yyin); \
0821             } \
0822         }\
0823 \
0824 
0825 #endif
0826 
0827 /* No semi-colon after return; correct usage is to write "yyterminate();" -
0828  * we don't want an extra ';' after the "return" because that will cause
0829  * some compilers to complain about unreachable statements.
0830  */
0831 #ifndef yyterminate
0832 #define yyterminate() return YY_NULL
0833 #endif
0834 
0835 /* Number of entries by which start-condition stack grows. */
0836 #ifndef YY_START_STACK_INCR
0837 #define YY_START_STACK_INCR 25
0838 #endif
0839 
0840 /* Report a fatal error. */
0841 #ifndef YY_FATAL_ERROR
0842 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
0843 #endif
0844 
0845 /* end tables serialization structures and prototypes */
0846 
0847 /* Default declaration of generated scanner - a define so the user can
0848  * easily add parameters.
0849  */
0850 #ifndef YY_DECL
0851 #define YY_DECL_IS_OURS 1
0852 
0853 extern int yylex (void);
0854 
0855 #define YY_DECL int yylex (void)
0856 #endif /* !YY_DECL */
0857 
0858 /* Code executed at the beginning of each rule, after yytext and yyleng
0859  * have been set up.
0860  */
0861 #ifndef YY_USER_ACTION
0862 #define YY_USER_ACTION
0863 #endif
0864 
0865 /* Code executed at the end of each rule. */
0866 #ifndef YY_BREAK
0867 #define YY_BREAK break;
0868 #endif
0869 
0870 #define YY_RULE_SETUP \
0871     YY_USER_ACTION
0872 
0873 /** The main scanner function which does all the work.
0874  */
0875 YY_DECL
0876 {
0877     register yy_state_type yy_current_state;
0878     register char *yy_cp, *yy_bp;
0879     register int yy_act;
0880 
0881 #line 73 "KDbSqlScanner.l"
0882 
0883 
0884     int DATE_OR_TIME_caller = 0;
0885 
0886 #line 887 "generated/sqlscanner.cpp"
0887 
0888     if ( !(yy_init) )
0889         {
0890         (yy_init) = 1;
0891 
0892 #ifdef YY_USER_INIT
0893         YY_USER_INIT;
0894 #endif
0895 
0896         if ( ! (yy_start) )
0897             (yy_start) = 1; /* first start state */
0898 
0899         if ( ! yyin )
0900             yyin = stdin;
0901 
0902         if ( ! yyout )
0903             yyout = stdout;
0904 
0905         if ( ! YY_CURRENT_BUFFER ) {
0906             yyensure_buffer_stack ();
0907             YY_CURRENT_BUFFER_LVALUE =
0908                 yy_create_buffer(yyin,YY_BUF_SIZE );
0909         }
0910 
0911         yy_load_buffer_state( );
0912         }
0913 
0914     while ( 1 )     /* loops until end-of-file is reached */
0915         {
0916         yy_cp = (yy_c_buf_p);
0917 
0918         /* Support of yytext. */
0919         *yy_cp = (yy_hold_char);
0920 
0921         /* yy_bp points to the position in yy_ch_buf of the start of
0922          * the current run.
0923          */
0924         yy_bp = yy_cp;
0925 
0926         yy_current_state = (yy_start);
0927 yy_match:
0928         do
0929             {
0930             register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
0931             if ( yy_accept[yy_current_state] )
0932                 {
0933                 (yy_last_accepting_state) = yy_current_state;
0934                 (yy_last_accepting_cpos) = yy_cp;
0935                 }
0936             while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
0937                 {
0938                 yy_current_state = (int) yy_def[yy_current_state];
0939                 if ( yy_current_state >= 195 )
0940                     yy_c = yy_meta[(unsigned int) yy_c];
0941                 }
0942             yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
0943             ++yy_cp;
0944             }
0945         while ( yy_current_state != 194 );
0946         yy_cp = (yy_last_accepting_cpos);
0947         yy_current_state = (yy_last_accepting_state);
0948 
0949 yy_find_action:
0950         yy_act = yy_accept[yy_current_state];
0951 
0952         YY_DO_BEFORE_ACTION;
0953 
0954 do_action:  /* This label is used only to access EOF actions. */
0955 
0956         switch ( yy_act )
0957     { /* beginning of action switch */
0958             case 0: /* must back up */
0959             /* undo the effects of YY_DO_BEFORE_ACTION */
0960             *yy_cp = (yy_hold_char);
0961             yy_cp = (yy_last_accepting_cpos);
0962             yy_current_state = (yy_last_accepting_state);
0963             goto yy_find_action;
0964 
0965 case 1:
0966 YY_RULE_SETUP
0967 #line 77 "KDbSqlScanner.l"
0968 {
0969     ECOUNT;
0970     return NOT_EQUAL;
0971 }
0972     YY_BREAK
0973 case 2:
0974 YY_RULE_SETUP
0975 #line 82 "KDbSqlScanner.l"
0976 {
0977     ECOUNT;
0978     return NOT_EQUAL2;
0979 }
0980     YY_BREAK
0981 case 3:
0982 YY_RULE_SETUP
0983 #line 87 "KDbSqlScanner.l"
0984 {
0985     ECOUNT;
0986     return '=';
0987 }
0988     YY_BREAK
0989 case 4:
0990 YY_RULE_SETUP
0991 #line 92 "KDbSqlScanner.l"
0992 {
0993     ECOUNT;
0994     return LESS_OR_EQUAL;
0995 }
0996     YY_BREAK
0997 case 5:
0998 YY_RULE_SETUP
0999 #line 97 "KDbSqlScanner.l"
1000 {
1001     ECOUNT;
1002     return GREATER_OR_EQUAL;
1003 }
1004     YY_BREAK
1005 case 6:
1006 YY_RULE_SETUP
1007 #line 102 "KDbSqlScanner.l"
1008 {
1009     ECOUNT;
1010     return SQL_IN;
1011 }
1012     YY_BREAK
1013 case 7:
1014 YY_RULE_SETUP
1015 #line 107 "KDbSqlScanner.l"
1016 {
1017 //! @todo what about hex or octal values?
1018     //we're using QString:toLongLong() here because atoll() is not so portable:
1019     ECOUNT;
1020     bool ok;
1021     yylval.integerValue = QByteArray(yytext).toLongLong(&ok);
1022     if (!ok) {
1023         setError(KDbParser::tr("Invalid integer number"), KDbParser::tr("This integer number may be too large."));
1024         return SCAN_ERROR;
1025     }
1026     return INTEGER_CONST;
1027 }
1028     YY_BREAK
1029 case 8:
1030 YY_RULE_SETUP
1031 #line 120 "KDbSqlScanner.l"
1032 {
1033     ECOUNT;
1034     yylval.binaryValue = new QByteArray(yytext, yyleng);
1035     return REAL_CONST;
1036 }
1037     YY_BREAK
1038 /* --- DATE_OR_TIME --- */
1039 case 9:
1040 YY_RULE_SETUP
1041 #line 127 "KDbSqlScanner.l"
1042 {
1043     ECOUNT;
1044     sqlParserDebug() << "### begin DATE_OR_TIME" << yytext << "(" << yyleng << ")";
1045     DATE_OR_TIME_caller = YYSTATE;
1046     BEGIN(DATE_OR_TIME);
1047     return '#';
1048 }
1049     YY_BREAK
1050 
1051 case 10:
1052 YY_RULE_SETUP
1053 #line 137 "KDbSqlScanner.l"
1054 { // year prefix or / or - or : separator
1055     ECOUNT;
1056     return yytext[0];
1057 }
1058     YY_BREAK
1059 case 11:
1060 YY_RULE_SETUP
1061 #line 142 "KDbSqlScanner.l"
1062 { // year, month, day, hour, minute or second
1063     ECOUNT;
1064     yylval.binaryValue = new QByteArray(yytext, yyleng);
1065     return DATE_TIME_INTEGER;
1066 }
1067     YY_BREAK
1068 case 12:
1069 YY_RULE_SETUP
1070 #line 148 "KDbSqlScanner.l"
1071 {
1072     ECOUNT;
1073     return TABS_OR_SPACES;
1074 }
1075     YY_BREAK
1076 case 13:
1077 YY_RULE_SETUP
1078 #line 153 "KDbSqlScanner.l"
1079 {
1080     ECOUNT;
1081     return TIME_AM;
1082 }
1083     YY_BREAK
1084 case 14:
1085 YY_RULE_SETUP
1086 #line 158 "KDbSqlScanner.l"
1087 {
1088     ECOUNT;
1089     return TIME_PM;
1090 }
1091     YY_BREAK
1092 case 15:
1093 YY_RULE_SETUP
1094 #line 163 "KDbSqlScanner.l"
1095 {
1096     ECOUNT;
1097     sqlParserDebug() << "### end DATE_OR_TIME" << yytext << "(" << yyleng << ")";
1098     BEGIN(DATE_OR_TIME_caller);
1099     return '#';
1100 }
1101     YY_BREAK
1102 case 16:
1103 YY_RULE_SETUP
1104 #line 171 "KDbSqlScanner.l"
1105 { // fallback rule to avoid flex's default action that prints the character to stdout
1106     // without notifying the scanner.
1107     ECOUNT;
1108     const QString string(QString::fromUtf8(yytext, yyleng));
1109     setError(KDbParser::tr("Unexpected character %1 in date/time").arg(maybeQuote(string)));
1110     return SCAN_ERROR;
1111 }
1112     YY_BREAK
1113 
1114 /* -- end of DATE_OR_TIME --- */
1115 case 17:
1116 YY_RULE_SETUP
1117 #line 182 "KDbSqlScanner.l"
1118 {
1119     ECOUNT;
1120     return AND;
1121 }
1122     YY_BREAK
1123 case 18:
1124 YY_RULE_SETUP
1125 #line 187 "KDbSqlScanner.l"
1126 {
1127     ECOUNT;
1128     return AS;
1129 }
1130     YY_BREAK
1131 case 19:
1132 YY_RULE_SETUP
1133 #line 192 "KDbSqlScanner.l"
1134 {
1135     ECOUNT;
1136     return CREATE;
1137 }
1138     YY_BREAK
1139 case 20:
1140 YY_RULE_SETUP
1141 #line 197 "KDbSqlScanner.l"
1142 {
1143     ECOUNT;
1144     return FROM;
1145 }
1146     YY_BREAK
1147 case 21:
1148 YY_RULE_SETUP
1149 #line 202 "KDbSqlScanner.l"
1150 {
1151     ECOUNT;
1152     return SQL_TYPE;
1153 }
1154     YY_BREAK
1155 case 22:
1156 YY_RULE_SETUP
1157 #line 207 "KDbSqlScanner.l"
1158 {
1159     ECOUNT;
1160     return JOIN;
1161 }
1162     YY_BREAK
1163 case 23:
1164 YY_RULE_SETUP
1165 #line 212 "KDbSqlScanner.l"
1166 {
1167     ECOUNT;
1168     return LEFT;
1169 }
1170     YY_BREAK
1171 case 24:
1172 YY_RULE_SETUP
1173 #line 217 "KDbSqlScanner.l"
1174 {
1175     ECOUNT;
1176     return LIKE;
1177 }
1178     YY_BREAK
1179 case 25:
1180 /* rule 25 can match eol */
1181 YY_RULE_SETUP
1182 #line 222 "KDbSqlScanner.l"
1183 {
1184     ECOUNT;
1185     return NOT_LIKE;
1186 }
1187     YY_BREAK
1188 case 26:
1189 YY_RULE_SETUP
1190 #line 227 "KDbSqlScanner.l"
1191 {
1192     ECOUNT;
1193     return BETWEEN;
1194 }
1195     YY_BREAK
1196 case 27:
1197 /* rule 27 can match eol */
1198 YY_RULE_SETUP
1199 #line 232 "KDbSqlScanner.l"
1200 {
1201     ECOUNT;
1202     return NOT_BETWEEN;
1203 }
1204     YY_BREAK
1205 case 28:
1206 /* rule 28 can match eol */
1207 YY_RULE_SETUP
1208 #line 237 "KDbSqlScanner.l"
1209 {
1210     ECOUNT;
1211     return NOT_SIMILAR_TO;
1212 }
1213     YY_BREAK
1214 case 29:
1215 /* rule 29 can match eol */
1216 YY_RULE_SETUP
1217 #line 242 "KDbSqlScanner.l"
1218 {
1219     ECOUNT;
1220     return SIMILAR_TO;
1221 }
1222     YY_BREAK
1223 case 30:
1224 /* rule 30 can match eol */
1225 YY_RULE_SETUP
1226 #line 247 "KDbSqlScanner.l"
1227 {
1228     ECOUNT;
1229     return SQL_IS_NOT_NULL;
1230 }
1231     YY_BREAK
1232 case 31:
1233 /* rule 31 can match eol */
1234 YY_RULE_SETUP
1235 #line 252 "KDbSqlScanner.l"
1236 {
1237     ECOUNT;
1238     return SQL_IS_NULL;
1239 }
1240     YY_BREAK
1241 case 32:
1242 YY_RULE_SETUP
1243 #line 257 "KDbSqlScanner.l"
1244 {
1245     ECOUNT;
1246     return NOT;
1247 }
1248     YY_BREAK
1249 case 33:
1250 YY_RULE_SETUP
1251 #line 262 "KDbSqlScanner.l"
1252 {
1253     ECOUNT;
1254     return SQL_IS;
1255 }
1256     YY_BREAK
1257 case 34:
1258 YY_RULE_SETUP
1259 #line 267 "KDbSqlScanner.l"
1260 {
1261     ECOUNT;
1262     return SQL_NULL;
1263 }
1264     YY_BREAK
1265 case 35:
1266 YY_RULE_SETUP
1267 #line 272 "KDbSqlScanner.l"
1268 {
1269         ECOUNT;
1270         return SQL_TRUE;
1271 }
1272     YY_BREAK
1273 case 36:
1274 YY_RULE_SETUP
1275 #line 277 "KDbSqlScanner.l"
1276 {
1277         ECOUNT;
1278         return SQL_FALSE;
1279 }
1280     YY_BREAK
1281 case 37:
1282 YY_RULE_SETUP
1283 #line 282 "KDbSqlScanner.l"
1284 {
1285     ECOUNT;
1286     return SQL_ON;
1287 }
1288     YY_BREAK
1289 case 38:
1290 YY_RULE_SETUP
1291 #line 287 "KDbSqlScanner.l"
1292 {
1293     ECOUNT;
1294     return OR;
1295 }
1296     YY_BREAK
1297 case 39:
1298 YY_RULE_SETUP
1299 #line 292 "KDbSqlScanner.l"
1300 { /* also means OR for numbers (mysql) */
1301     ECOUNT;
1302     return CONCATENATION;
1303 }
1304     YY_BREAK
1305 case 40:
1306 YY_RULE_SETUP
1307 #line 297 "KDbSqlScanner.l"
1308 {
1309     ECOUNT;
1310     return BITWISE_SHIFT_LEFT;
1311 }
1312     YY_BREAK
1313 case 41:
1314 YY_RULE_SETUP
1315 #line 302 "KDbSqlScanner.l"
1316 {
1317     ECOUNT;
1318     return BITWISE_SHIFT_RIGHT;
1319 }
1320     YY_BREAK
1321 case 42:
1322 YY_RULE_SETUP
1323 #line 307 "KDbSqlScanner.l"
1324 {
1325     ECOUNT;
1326     return XOR;
1327 }
1328     YY_BREAK
1329 case 43:
1330 YY_RULE_SETUP
1331 #line 312 "KDbSqlScanner.l"
1332 {
1333     ECOUNT;
1334     return RIGHT;
1335 }
1336     YY_BREAK
1337 case 44:
1338 YY_RULE_SETUP
1339 #line 317 "KDbSqlScanner.l"
1340 {
1341     ECOUNT;
1342     return SELECT;
1343 }
1344     YY_BREAK
1345 case 45:
1346 YY_RULE_SETUP
1347 #line 322 "KDbSqlScanner.l"
1348 {
1349     ECOUNT;
1350     return TABLE;
1351 }
1352     YY_BREAK
1353 case 46:
1354 YY_RULE_SETUP
1355 #line 327 "KDbSqlScanner.l"
1356 {
1357     ECOUNT;
1358     return WHERE;
1359 }
1360     YY_BREAK
1361 case 47:
1362 YY_RULE_SETUP
1363 #line 332 "KDbSqlScanner.l"
1364 {
1365     ECOUNT;
1366     return ORDER;
1367 }
1368     YY_BREAK
1369 case 48:
1370 YY_RULE_SETUP
1371 #line 337 "KDbSqlScanner.l"
1372 {
1373     ECOUNT;
1374     return BY;
1375 }
1376     YY_BREAK
1377 case 49:
1378 YY_RULE_SETUP
1379 #line 342 "KDbSqlScanner.l"
1380 {
1381     ECOUNT;
1382     return ASC;
1383 }
1384     YY_BREAK
1385 case 50:
1386 YY_RULE_SETUP
1387 #line 347 "KDbSqlScanner.l"
1388 {
1389     ECOUNT;
1390     return DESC;
1391 }
1392     YY_BREAK
1393 case 51:
1394 /* rule 51 can match eol */
1395 YY_RULE_SETUP
1396 #line 352 "KDbSqlScanner.l"
1397 {
1398     ECOUNT;
1399     sqlParserDebug() << "{string} yytext: '" << yytext << "' (" << yyleng << ")";
1400     int errorPosition;
1401     const QString unescaped(
1402         KDb::unescapeString(QString::fromUtf8(yytext+1, yyleng-2), yytext[0], &errorPosition));
1403     if (errorPosition >= 0) { // sanity check
1404         setError(KDbParser::tr("Invalid string"),
1405                  KDbParser::tr("Invalid character in string"));
1406         return SCAN_ERROR;
1407     }
1408     yylval.stringValue = new QString(unescaped);
1409     return CHARACTER_STRING_LITERAL;
1410 
1411 /* "ZZZ" sentinel for script */
1412 }
1413     YY_BREAK
1414 case 52:
1415 YY_RULE_SETUP
1416 #line 369 "KDbSqlScanner.l"
1417 {
1418     sqlParserDebug() << "{identifier} yytext: '" << yytext << "' (" << yyleng << ")";
1419     ECOUNT;
1420     if (yytext[0]>='0' && yytext[0]<='9') {
1421         setError(KDbParser::tr("Invalid identifier"),
1422                  KDbParser::tr("Identifiers should start with a letter or '_' character"));
1423         return SCAN_ERROR;
1424     }
1425     yylval.stringValue = new QString(QString::fromUtf8(yytext, yyleng));
1426     return IDENTIFIER;
1427 }
1428     YY_BREAK
1429 case 53:
1430 /* rule 53 can match eol */
1431 YY_RULE_SETUP
1432 #line 381 "KDbSqlScanner.l"
1433 {
1434     sqlParserDebug() << "{query_parameter} yytext: '" << yytext << "' (" << yyleng << ")";
1435     ECOUNT;
1436     yylval.stringValue = new QString(QString::fromUtf8(yytext+1, yyleng-2));
1437     return QUERY_PARAMETER;
1438 }
1439     YY_BREAK
1440 case 54:
1441 /* rule 54 can match eol */
1442 YY_RULE_SETUP
1443 #line 388 "KDbSqlScanner.l"
1444 {
1445     ECOUNT;
1446 }
1447     YY_BREAK
1448 case 55:
1449 YY_RULE_SETUP
1450 #line 392 "KDbSqlScanner.l"
1451 {
1452     sqlParserDebug() << "char: '" << yytext[0] << "'";
1453     ECOUNT;
1454     return yytext[0];
1455 }
1456     YY_BREAK
1457 case 56:
1458 YY_RULE_SETUP
1459 #line 398 "KDbSqlScanner.l"
1460 { // fallback rule to avoid flex's default action that prints the character to stdout
1461     // without notifying the scanner.
1462     ECOUNT;
1463     const QString string(QString::fromUtf8(yytext, yyleng));
1464     setError(KDbParser::tr("Unexpected character %1").arg(maybeQuote(string)));
1465     return SCAN_ERROR;
1466 }
1467     YY_BREAK
1468 case 57:
1469 YY_RULE_SETUP
1470 #line 406 "KDbSqlScanner.l"
1471 ECHO;
1472     YY_BREAK
1473 #line 1474 "generated/sqlscanner.cpp"
1474 case YY_STATE_EOF(INITIAL):
1475 case YY_STATE_EOF(DATE_OR_TIME):
1476     yyterminate();
1477 
1478     case YY_END_OF_BUFFER:
1479         {
1480         /* Amount of text matched not including the EOB char. */
1481         int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
1482 
1483         /* Undo the effects of YY_DO_BEFORE_ACTION. */
1484         *yy_cp = (yy_hold_char);
1485         YY_RESTORE_YY_MORE_OFFSET
1486 
1487         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1488             {
1489             /* We're scanning a new file or input source.  It's
1490              * possible that this happened because the user
1491              * just pointed yyin at a new source and called
1492              * yylex().  If so, then we have to assure
1493              * consistency between YY_CURRENT_BUFFER and our
1494              * globals.  Here is the right place to do so, because
1495              * this is the first action (other than possibly a
1496              * back-up) that will match for the new input source.
1497              */
1498             (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1499             YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
1500             YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1501             }
1502 
1503         /* Note that here we test for yy_c_buf_p "<=" to the position
1504          * of the first EOB in the buffer, since yy_c_buf_p will
1505          * already have been incremented past the NUL character
1506          * (since all states make transitions on EOB to the
1507          * end-of-buffer state).  Contrast this with the test
1508          * in input().
1509          */
1510         if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1511             { /* This was really a NUL. */
1512             yy_state_type yy_next_state;
1513 
1514             (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
1515 
1516             yy_current_state = yy_get_previous_state(  );
1517 
1518             /* Okay, we're now positioned to make the NUL
1519              * transition.  We couldn't have
1520              * yy_get_previous_state() go ahead and do it
1521              * for us because it doesn't know how to deal
1522              * with the possibility of jamming (and we don't
1523              * want to build jamming into it because then it
1524              * will run more slowly).
1525              */
1526 
1527             yy_next_state = yy_try_NUL_trans( yy_current_state );
1528 
1529             yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1530 
1531             if ( yy_next_state )
1532                 {
1533                 /* Consume the NUL. */
1534                 yy_cp = ++(yy_c_buf_p);
1535                 yy_current_state = yy_next_state;
1536                 goto yy_match;
1537                 }
1538 
1539             else
1540                 {
1541                 yy_cp = (yy_last_accepting_cpos);
1542                 yy_current_state = (yy_last_accepting_state);
1543                 goto yy_find_action;
1544                 }
1545             }
1546 
1547         else switch ( yy_get_next_buffer(  ) )
1548             {
1549             case EOB_ACT_END_OF_FILE:
1550                 {
1551                 (yy_did_buffer_switch_on_eof) = 0;
1552 
1553                 if ( yywrap( ) )
1554                     {
1555                     /* Note: because we've taken care in
1556                      * yy_get_next_buffer() to have set up
1557                      * yytext, we can now set up
1558                      * yy_c_buf_p so that if some total
1559                      * hoser (like flex itself) wants to
1560                      * call the scanner after we return the
1561                      * YY_NULL, it'll still work - another
1562                      * YY_NULL will get returned.
1563                      */
1564                     (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
1565 
1566                     yy_act = YY_STATE_EOF(YY_START);
1567                     goto do_action;
1568                     }
1569 
1570                 else
1571                     {
1572                     if ( ! (yy_did_buffer_switch_on_eof) )
1573                         YY_NEW_FILE;
1574                     }
1575                 break;
1576                 }
1577 
1578             case EOB_ACT_CONTINUE_SCAN:
1579                 (yy_c_buf_p) =
1580                     (yytext_ptr) + yy_amount_of_matched_text;
1581 
1582                 yy_current_state = yy_get_previous_state(  );
1583 
1584                 yy_cp = (yy_c_buf_p);
1585                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1586                 goto yy_match;
1587 
1588             case EOB_ACT_LAST_MATCH:
1589                 (yy_c_buf_p) =
1590                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
1591 
1592                 yy_current_state = yy_get_previous_state(  );
1593 
1594                 yy_cp = (yy_c_buf_p);
1595                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1596                 goto yy_find_action;
1597             }
1598         break;
1599         }
1600 
1601     default:
1602         YY_FATAL_ERROR(
1603             "fatal flex scanner internal error--no action found" );
1604     } /* end of action switch */
1605         } /* end of scanning one token */
1606 } /* end of yylex */
1607 
1608 /* yy_get_next_buffer - try to read in a new buffer
1609  *
1610  * Returns a code representing an action:
1611  *  EOB_ACT_LAST_MATCH -
1612  *  EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1613  *  EOB_ACT_END_OF_FILE - end of file
1614  */
1615 static int yy_get_next_buffer (void)
1616 {
1617         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1618     register char *source = (yytext_ptr);
1619     register int number_to_move, i;
1620     int ret_val;
1621 
1622     if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
1623         YY_FATAL_ERROR(
1624         "fatal flex scanner internal error--end of buffer missed" );
1625 
1626     if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1627         { /* Don't try to fill the buffer, so this is an EOF. */
1628         if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
1629             {
1630             /* We matched a single character, the EOB, so
1631              * treat this as a final EOF.
1632              */
1633             return EOB_ACT_END_OF_FILE;
1634             }
1635 
1636         else
1637             {
1638             /* We matched some text prior to the EOB, first
1639              * process it.
1640              */
1641             return EOB_ACT_LAST_MATCH;
1642             }
1643         }
1644 
1645     /* Try to read more data. */
1646 
1647     /* First move last chars to start of buffer. */
1648     number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
1649 
1650     for ( i = 0; i < number_to_move; ++i )
1651         *(dest++) = *(source++);
1652 
1653     if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1654         /* don't do the read, it's not guaranteed to return an EOF,
1655          * just force an EOF
1656          */
1657         YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
1658 
1659     else
1660         {
1661             int num_to_read =
1662             YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1663 
1664         while ( num_to_read <= 0 )
1665             { /* Not enough room in the buffer - grow it. */
1666 
1667             /* just a shorter name for the current buffer */
1668             YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
1669 
1670             int yy_c_buf_p_offset =
1671                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
1672 
1673             if ( b->yy_is_our_buffer )
1674                 {
1675                 yy_size_t new_size = b->yy_buf_size * 2;
1676 
1677                 if ( new_size <= 0 )
1678                     b->yy_buf_size += b->yy_buf_size / 8;
1679                 else
1680                     b->yy_buf_size *= 2;
1681 
1682                 b->yy_ch_buf = (char *)
1683                     /* Include room in for 2 EOB chars. */
1684                     yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
1685                 }
1686             else
1687                 /* Can't grow it, we don't own it. */
1688                 b->yy_ch_buf = 0;
1689 
1690             if ( ! b->yy_ch_buf )
1691                 YY_FATAL_ERROR(
1692                 "fatal error - scanner input buffer overflow" );
1693 
1694             (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
1695 
1696             num_to_read = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
1697                         number_to_move - 1;
1698 
1699             }
1700 
1701         if ( num_to_read > YY_READ_BUF_SIZE )
1702             num_to_read = YY_READ_BUF_SIZE;
1703 
1704         /* Read in more data. */
1705         YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1706             (yy_n_chars), num_to_read );
1707 
1708         YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1709         }
1710 
1711     if ( (yy_n_chars) == 0 )
1712         {
1713         if ( number_to_move == YY_MORE_ADJ )
1714             {
1715             ret_val = EOB_ACT_END_OF_FILE;
1716             yyrestart(yyin  );
1717             }
1718 
1719         else
1720             {
1721             ret_val = EOB_ACT_LAST_MATCH;
1722             YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
1723                 YY_BUFFER_EOF_PENDING;
1724             }
1725         }
1726 
1727     else
1728         ret_val = EOB_ACT_CONTINUE_SCAN;
1729 
1730     if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
1731         /* Extend the array by 50%, plus the number we really need. */
1732         int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
1733         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
1734         if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1735             YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
1736     }
1737 
1738     (yy_n_chars) += number_to_move;
1739     YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
1740     YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
1741 
1742     (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
1743 
1744     return ret_val;
1745 }
1746 
1747 /* yy_get_previous_state - get the state just before the EOB char was reached */
1748 
1749     static yy_state_type yy_get_previous_state (void)
1750 {
1751     register yy_state_type yy_current_state;
1752     register char *yy_cp;
1753 
1754     yy_current_state = (yy_start);
1755 
1756     for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
1757         {
1758         register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1759         if ( yy_accept[yy_current_state] )
1760             {
1761             (yy_last_accepting_state) = yy_current_state;
1762             (yy_last_accepting_cpos) = yy_cp;
1763             }
1764         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1765             {
1766             yy_current_state = (int) yy_def[yy_current_state];
1767             if ( yy_current_state >= 195 )
1768                 yy_c = yy_meta[(unsigned int) yy_c];
1769             }
1770         yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
1771         }
1772 
1773     return yy_current_state;
1774 }
1775 
1776 /* yy_try_NUL_trans - try to make a transition on the NUL character
1777  *
1778  * synopsis
1779  *  next_state = yy_try_NUL_trans( current_state );
1780  */
1781     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
1782 {
1783     register int yy_is_jam;
1784         register char *yy_cp = (yy_c_buf_p);
1785 
1786     register YY_CHAR yy_c = 1;
1787     if ( yy_accept[yy_current_state] )
1788         {
1789         (yy_last_accepting_state) = yy_current_state;
1790         (yy_last_accepting_cpos) = yy_cp;
1791         }
1792     while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1793         {
1794         yy_current_state = (int) yy_def[yy_current_state];
1795         if ( yy_current_state >= 195 )
1796             yy_c = yy_meta[(unsigned int) yy_c];
1797         }
1798     yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
1799     yy_is_jam = (yy_current_state == 194);
1800 
1801         return yy_is_jam ? 0 : yy_current_state;
1802 }
1803 
1804     static void yyunput (int c, register char * yy_bp )
1805 {
1806     register char *yy_cp;
1807 
1808     yy_cp = (yy_c_buf_p);
1809 
1810     /* undo effects of setting up yytext */
1811     *yy_cp = (yy_hold_char);
1812 
1813     if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1814         { /* need to shift things up to make room */
1815         /* +2 for EOB chars. */
1816         register int number_to_move = (yy_n_chars) + 2;
1817         register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
1818                     YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
1819         register char *source =
1820                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
1821 
1822         while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1823             *--dest = *--source;
1824 
1825         yy_cp += (int) (dest - source);
1826         yy_bp += (int) (dest - source);
1827         YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
1828             (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
1829 
1830         if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1831             YY_FATAL_ERROR( "flex scanner push-back overflow" );
1832         }
1833 
1834     *--yy_cp = (char) c;
1835 
1836     (yytext_ptr) = yy_bp;
1837     (yy_hold_char) = *yy_cp;
1838     (yy_c_buf_p) = yy_cp;
1839 }
1840 
1841 #ifndef YY_NO_INPUT
1842 #ifdef __cplusplus
1843     static int yyinput (void)
1844 #else
1845     static int input  (void)
1846 #endif
1847 
1848 {
1849     int c;
1850 
1851     *(yy_c_buf_p) = (yy_hold_char);
1852 
1853     if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
1854         {
1855         /* yy_c_buf_p now points to the character we want to return.
1856          * If this occurs *before* the EOB characters, then it's a
1857          * valid NUL; if not, then we've hit the end of the buffer.
1858          */
1859         if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1860             /* This was really a NUL. */
1861             *(yy_c_buf_p) = '\0';
1862 
1863         else
1864             { /* need more input */
1865             yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
1866             ++(yy_c_buf_p);
1867 
1868             switch ( yy_get_next_buffer(  ) )
1869                 {
1870                 case EOB_ACT_LAST_MATCH:
1871                     /* This happens because yy_g_n_b()
1872                      * sees that we've accumulated a
1873                      * token and flags that we need to
1874                      * try matching the token before
1875                      * proceeding.  But for input(),
1876                      * there's no matching to consider.
1877                      * So convert the EOB_ACT_LAST_MATCH
1878                      * to EOB_ACT_END_OF_FILE.
1879                      */
1880 
1881                     /* Reset buffer status. */
1882                     yyrestart(yyin );
1883 
1884                     /*FALLTHROUGH*/
1885 
1886                 case EOB_ACT_END_OF_FILE:
1887                     {
1888                     if ( yywrap( ) )
1889                         return EOF;
1890 
1891                     if ( ! (yy_did_buffer_switch_on_eof) )
1892                         YY_NEW_FILE;
1893 #ifdef __cplusplus
1894                     return yyinput();
1895 #else
1896                     return input();
1897 #endif
1898                     }
1899 
1900                 case EOB_ACT_CONTINUE_SCAN:
1901                     (yy_c_buf_p) = (yytext_ptr) + offset;
1902                     break;
1903                 }
1904             }
1905         }
1906 
1907     c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
1908     *(yy_c_buf_p) = '\0';   /* preserve yytext */
1909     (yy_hold_char) = *++(yy_c_buf_p);
1910 
1911     return c;
1912 }
1913 #endif  /* ifndef YY_NO_INPUT */
1914 
1915 /** Immediately switch to a different input stream.
1916  * @param input_file A readable stream.
1917  *
1918  * @note This function does not reset the start condition to @c INITIAL .
1919  */
1920     void yyrestart  (FILE * input_file )
1921 {
1922 
1923     if ( ! YY_CURRENT_BUFFER ){
1924         yyensure_buffer_stack ();
1925         YY_CURRENT_BUFFER_LVALUE =
1926             yy_create_buffer(yyin,YY_BUF_SIZE );
1927     }
1928 
1929     yy_init_buffer(YY_CURRENT_BUFFER,input_file );
1930     yy_load_buffer_state( );
1931 }
1932 
1933 /** Switch to a different input buffer.
1934  * @param new_buffer The new input buffer.
1935  *
1936  */
1937     void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
1938 {
1939 
1940     /* TODO. We should be able to replace this entire function body
1941      * with
1942      *      yypop_buffer_state();
1943      *      yypush_buffer_state(new_buffer);
1944      */
1945     yyensure_buffer_stack ();
1946     if ( YY_CURRENT_BUFFER == new_buffer )
1947         return;
1948 
1949     if ( YY_CURRENT_BUFFER )
1950         {
1951         /* Flush out information for old buffer. */
1952         *(yy_c_buf_p) = (yy_hold_char);
1953         YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
1954         YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1955         }
1956 
1957     YY_CURRENT_BUFFER_LVALUE = new_buffer;
1958     yy_load_buffer_state( );
1959 
1960     /* We don't actually know whether we did this switch during
1961      * EOF (yywrap()) processing, but the only time this flag
1962      * is looked at is after yywrap() is called, so it's safe
1963      * to go ahead and always set it.
1964      */
1965     (yy_did_buffer_switch_on_eof) = 1;
1966 }
1967 
1968 static void yy_load_buffer_state  (void)
1969 {
1970         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1971     (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
1972     yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
1973     (yy_hold_char) = *(yy_c_buf_p);
1974 }
1975 
1976 /** Allocate and initialize an input buffer state.
1977  * @param file A readable stream.
1978  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
1979  *
1980  * @return the allocated buffer state.
1981  */
1982     YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
1983 {
1984     YY_BUFFER_STATE b;
1985 
1986     b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
1987     if ( ! b )
1988         YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1989 
1990     b->yy_buf_size = size;
1991 
1992     /* yy_ch_buf has to be 2 characters longer than the size given because
1993      * we need to put in 2 end-of-buffer characters.
1994      */
1995     b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
1996     if ( ! b->yy_ch_buf )
1997         YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1998 
1999     b->yy_is_our_buffer = 1;
2000 
2001     yy_init_buffer(b,file );
2002 
2003     return b;
2004 }
2005 
2006 /** Destroy the buffer.
2007  * @param b a buffer created with yy_create_buffer()
2008  *
2009  */
2010     void yy_delete_buffer (YY_BUFFER_STATE  b )
2011 {
2012 
2013     if ( ! b )
2014         return;
2015 
2016     if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2017         YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2018 
2019     if ( b->yy_is_our_buffer )
2020         yyfree((void *) b->yy_ch_buf  );
2021 
2022     yyfree((void *) b  );
2023 }
2024 
2025 /* Initializes or reinitializes a buffer.
2026  * This function is sometimes called more than once on the same buffer,
2027  * such as during a yyrestart() or at EOF.
2028  */
2029     static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
2030 
2031 {
2032     int oerrno = errno;
2033 
2034     yy_flush_buffer(b );
2035 
2036     b->yy_input_file = file;
2037     b->yy_fill_buffer = 1;
2038 
2039     /* If b is the current buffer, then yy_init_buffer was _probably_
2040      * called from yyrestart() or through yy_get_next_buffer.
2041      * In that case, we don't want to reset the lineno or column.
2042      */
2043     if (b != YY_CURRENT_BUFFER){
2044         b->yy_bs_lineno = 1;
2045         b->yy_bs_column = 0;
2046     }
2047 
2048         b->yy_is_interactive = 0;
2049 
2050     errno = oerrno;
2051 }
2052 
2053 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2054  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2055  *
2056  */
2057     void yy_flush_buffer (YY_BUFFER_STATE  b )
2058 {
2059         if ( ! b )
2060         return;
2061 
2062     b->yy_n_chars = 0;
2063 
2064     /* We always need two end-of-buffer characters.  The first causes
2065      * a transition to the end-of-buffer state.  The second causes
2066      * a jam in that state.
2067      */
2068     b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2069     b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2070 
2071     b->yy_buf_pos = &b->yy_ch_buf[0];
2072 
2073     b->yy_at_bol = 1;
2074     b->yy_buffer_status = YY_BUFFER_NEW;
2075 
2076     if ( b == YY_CURRENT_BUFFER )
2077         yy_load_buffer_state( );
2078 }
2079 
2080 /** Pushes the new state onto the stack. The new state becomes
2081  *  the current state. This function will allocate the stack
2082  *  if necessary.
2083  *  @param new_buffer The new state.
2084  *
2085  */
2086 void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
2087 {
2088         if (new_buffer == NULL)
2089         return;
2090 
2091     yyensure_buffer_stack();
2092 
2093     /* This block is copied from yy_switch_to_buffer. */
2094     if ( YY_CURRENT_BUFFER )
2095         {
2096         /* Flush out information for old buffer. */
2097         *(yy_c_buf_p) = (yy_hold_char);
2098         YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2099         YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2100         }
2101 
2102     /* Only push if top exists. Otherwise, replace top. */
2103     if (YY_CURRENT_BUFFER)
2104         (yy_buffer_stack_top)++;
2105     YY_CURRENT_BUFFER_LVALUE = new_buffer;
2106 
2107     /* copied from yy_switch_to_buffer. */
2108     yy_load_buffer_state( );
2109     (yy_did_buffer_switch_on_eof) = 1;
2110 }
2111 
2112 /** Removes and deletes the top of the stack, if present.
2113  *  The next element becomes the new top.
2114  *
2115  */
2116 void yypop_buffer_state (void)
2117 {
2118         if (!YY_CURRENT_BUFFER)
2119         return;
2120 
2121     yy_delete_buffer(YY_CURRENT_BUFFER );
2122     YY_CURRENT_BUFFER_LVALUE = NULL;
2123     if ((yy_buffer_stack_top) > 0)
2124         --(yy_buffer_stack_top);
2125 
2126     if (YY_CURRENT_BUFFER) {
2127         yy_load_buffer_state( );
2128         (yy_did_buffer_switch_on_eof) = 1;
2129     }
2130 }
2131 
2132 /* Allocates the stack if it does not exist.
2133  *  Guarantees space for at least one push.
2134  */
2135 static void yyensure_buffer_stack (void)
2136 {
2137     yy_size_t num_to_alloc;
2138 
2139     if (!(yy_buffer_stack)) {
2140 
2141         /* First allocation is just for 2 elements, since we don't know if this
2142          * scanner will even need a stack. We use 2 instead of 1 to avoid an
2143          * immediate realloc on the next call.
2144          */
2145         num_to_alloc = 1;
2146         (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
2147                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
2148                                 );
2149         if ( ! (yy_buffer_stack) )
2150             YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2151 
2152         memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2153 
2154         (yy_buffer_stack_max) = num_to_alloc;
2155         (yy_buffer_stack_top) = 0;
2156         return;
2157     }
2158 
2159     if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
2160 
2161         /* Increase the buffer to prepare for a possible push. */
2162         int grow_size = 8 /* arbitrary grow size */;
2163 
2164         num_to_alloc = (yy_buffer_stack_max) + grow_size;
2165         (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
2166                                 ((yy_buffer_stack),
2167                                 num_to_alloc * sizeof(struct yy_buffer_state*)
2168                                 );
2169         if ( ! (yy_buffer_stack) )
2170             YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2171 
2172         /* zero only the new slots.*/
2173         memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
2174         (yy_buffer_stack_max) = num_to_alloc;
2175     }
2176 }
2177 
2178 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2179  * @param base the character buffer
2180  * @param size the size in bytes of the character buffer
2181  *
2182  * @return the newly allocated buffer state object.
2183  */
2184 YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
2185 {
2186     YY_BUFFER_STATE b;
2187 
2188     if ( size < 2 ||
2189          base[size-2] != YY_END_OF_BUFFER_CHAR ||
2190          base[size-1] != YY_END_OF_BUFFER_CHAR )
2191         /* They forgot to leave room for the EOB's. */
2192         return 0;
2193 
2194     b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
2195     if ( ! b )
2196         YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2197 
2198     b->yy_buf_size = size - 2;  /* "- 2" to take care of EOB's */
2199     b->yy_buf_pos = b->yy_ch_buf = base;
2200     b->yy_is_our_buffer = 0;
2201     b->yy_input_file = 0;
2202     b->yy_n_chars = b->yy_buf_size;
2203     b->yy_is_interactive = 0;
2204     b->yy_at_bol = 1;
2205     b->yy_fill_buffer = 0;
2206     b->yy_buffer_status = YY_BUFFER_NEW;
2207 
2208     yy_switch_to_buffer(b  );
2209 
2210     return b;
2211 }
2212 
2213 /** Setup the input buffer state to scan a string. The next call to yylex() will
2214  * scan from a @e copy of @a str.
2215  * @param yystr a NUL-terminated string to scan
2216  *
2217  * @return the newly allocated buffer state object.
2218  * @note If you want to scan bytes that may contain NUL values, then use
2219  *       yy_scan_bytes() instead.
2220  */
2221 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
2222 {
2223 
2224     return yy_scan_bytes(yystr,(int) strlen(yystr) );
2225 }
2226 
2227 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
2228  * scan from a @e copy of @a bytes.
2229  * @param yybytes the byte buffer to scan
2230  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
2231  *
2232  * @return the newly allocated buffer state object.
2233  */
2234 YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
2235 {
2236     YY_BUFFER_STATE b;
2237     char *buf;
2238     yy_size_t n;
2239     int i;
2240 
2241     /* Get memory for full buffer, including space for trailing EOB's. */
2242     n = (yy_size_t) _yybytes_len + 2;
2243     buf = (char *) yyalloc(n  );
2244     if ( ! buf )
2245         YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2246 
2247     for ( i = 0; i < _yybytes_len; ++i )
2248         buf[i] = yybytes[i];
2249 
2250     buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2251 
2252     b = yy_scan_buffer(buf,n );
2253     if ( ! b )
2254         YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2255 
2256     /* It's okay to grow etc. this buffer, and we should throw it
2257      * away when we're done.
2258      */
2259     b->yy_is_our_buffer = 1;
2260 
2261     return b;
2262 }
2263 
2264 #ifndef YY_EXIT_FAILURE
2265 #define YY_EXIT_FAILURE 2
2266 #endif
2267 
2268 static void yy_fatal_error (yyconst char* msg )
2269 {
2270         (void) fprintf( stderr, "%s\n", msg );
2271     exit( YY_EXIT_FAILURE );
2272 }
2273 
2274 /* Redefine yyless() so it works in section 3 code. */
2275 
2276 #undef yyless
2277 #define yyless(n) \
2278     do \
2279         { \
2280         /* Undo effects of setting up yytext. */ \
2281         int yyless_macro_arg = (n); \
2282         YY_LESS_LINENO(yyless_macro_arg);\
2283         yytext[yyleng] = (yy_hold_char); \
2284         (yy_c_buf_p) = yytext + yyless_macro_arg; \
2285         (yy_hold_char) = *(yy_c_buf_p); \
2286         *(yy_c_buf_p) = '\0'; \
2287         yyleng = yyless_macro_arg; \
2288         } \
2289     while ( 0 )
2290 
2291 /* Accessor  methods (get/set functions) to struct members. */
2292 
2293 /** Get the current line number.
2294  *
2295  */
2296 int yyget_lineno  (void)
2297 {
2298 
2299     return yylineno;
2300 }
2301 
2302 /** Get the input stream.
2303  *
2304  */
2305 FILE *yyget_in  (void)
2306 {
2307         return yyin;
2308 }
2309 
2310 /** Get the output stream.
2311  *
2312  */
2313 FILE *yyget_out  (void)
2314 {
2315         return yyout;
2316 }
2317 
2318 /** Get the length of the current token.
2319  *
2320  */
2321 yy_size_t yyget_leng  (void)
2322 {
2323         return yyleng;
2324 }
2325 
2326 /** Get the current token.
2327  *
2328  */
2329 
2330 char *yyget_text  (void)
2331 {
2332         return yytext;
2333 }
2334 
2335 /** Set the current line number.
2336  * @param line_number
2337  *
2338  */
2339 void yyset_lineno (int  line_number )
2340 {
2341 
2342     yylineno = line_number;
2343 }
2344 
2345 /** Set the input stream. This does not discard the current
2346  * input buffer.
2347  * @param in_str A readable stream.
2348  *
2349  * @see yy_switch_to_buffer
2350  */
2351 void yyset_in (FILE *  in_str )
2352 {
2353         yyin = in_str ;
2354 }
2355 
2356 void yyset_out (FILE *  out_str )
2357 {
2358         yyout = out_str ;
2359 }
2360 
2361 int yyget_debug  (void)
2362 {
2363         return yy_flex_debug;
2364 }
2365 
2366 void yyset_debug (int  bdebug )
2367 {
2368         yy_flex_debug = bdebug ;
2369 }
2370 
2371 static int yy_init_globals (void)
2372 {
2373         /* Initialization is the same as for the non-reentrant scanner.
2374      * This function is called from yylex_destroy(), so don't allocate here.
2375      */
2376 
2377     (yy_buffer_stack) = 0;
2378     (yy_buffer_stack_top) = 0;
2379     (yy_buffer_stack_max) = 0;
2380     (yy_c_buf_p) = (char *) 0;
2381     (yy_init) = 0;
2382     (yy_start) = 0;
2383 
2384 /* Defined in main.c */
2385 #ifdef YY_STDINIT
2386     yyin = stdin;
2387     yyout = stdout;
2388 #else
2389     yyin = (FILE *) 0;
2390     yyout = (FILE *) 0;
2391 #endif
2392 
2393     /* For future reference: Set errno on error, since we are called by
2394      * yylex_init()
2395      */
2396     return 0;
2397 }
2398 
2399 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
2400 int yylex_destroy  (void)
2401 {
2402 
2403     /* Pop the buffer stack, destroying each element. */
2404     while(YY_CURRENT_BUFFER){
2405         yy_delete_buffer(YY_CURRENT_BUFFER  );
2406         YY_CURRENT_BUFFER_LVALUE = NULL;
2407         yypop_buffer_state();
2408     }
2409 
2410     /* Destroy the stack itself. */
2411     yyfree((yy_buffer_stack) );
2412     (yy_buffer_stack) = NULL;
2413 
2414     /* Reset the globals. This is important in a non-reentrant scanner so the next time
2415      * yylex() is called, initialization will occur. */
2416     yy_init_globals( );
2417 
2418     return 0;
2419 }
2420 
2421 /*
2422  * Internal utility routines.
2423  */
2424 
2425 #ifndef yytext_ptr
2426 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
2427 {
2428     register int i;
2429     for ( i = 0; i < n; ++i )
2430         s1[i] = s2[i];
2431 }
2432 #endif
2433 
2434 #ifdef YY_NEED_STRLEN
2435 static int yy_flex_strlen (yyconst char * s )
2436 {
2437     register int n;
2438     for ( n = 0; s[n]; ++n )
2439         ;
2440 
2441     return n;
2442 }
2443 #endif
2444 
2445 void *yyalloc (yy_size_t  size )
2446 {
2447     return (void *) malloc( size );
2448 }
2449 
2450 void *yyrealloc  (void * ptr, yy_size_t  size )
2451 {
2452     /* The cast to (char *) in the following accommodates both
2453      * implementations that use char* generic pointers, and those
2454      * that use void* generic pointers.  It works with the latter
2455      * because both ANSI C and C++ allow castless assignment from
2456      * any pointer type to void*, and deal with argument conversions
2457      * as though doing an assignment.
2458      */
2459     return (void *) realloc( (char *) ptr, size );
2460 }
2461 
2462 void yyfree (void * ptr )
2463 {
2464     free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
2465 }
2466 
2467 #define YYTABLES_NAME "yytables"
2468 
2469 #line 406 "KDbSqlScanner.l"
2470 
2471 
2472 
2473 void tokenize(const char *data)
2474 {
2475     yy_switch_to_buffer(yy_scan_string(data));
2476     globalToken.clear();
2477     globalCurrentPos = 0;
2478 }
2479 
2480