~ubuntu-branches/ubuntu/precise/mysql-5.1/precise

« back to all changes in this revision

Viewing changes to storage/innodb_plugin/pars/lexyy.c

  • Committer: Bazaar Package Importer
  • Author(s): Norbert Tretkowski
  • Date: 2010-03-17 14:56:02 UTC
  • Revision ID: james.westby@ubuntu.com-20100317145602-x7e30l1b2sb5s6w6
Tags: upstream-5.1.45
ImportĀ upstreamĀ versionĀ 5.1.45

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*****************************************************************************
 
2
 
 
3
Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
 
4
 
 
5
This program is free software; you can redistribute it and/or modify it under
 
6
the terms of the GNU General Public License as published by the Free Software
 
7
Foundation; version 2 of the License.
 
8
 
 
9
This program is distributed in the hope that it will be useful, but WITHOUT
 
10
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 
11
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 
12
 
 
13
You should have received a copy of the GNU General Public License along with
 
14
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
 
15
Place, Suite 330, Boston, MA 02111-1307 USA
 
16
 
 
17
*****************************************************************************/
 
18
 
 
19
#include "univ.i"
 
20
#line 2 "lexyy.c"
 
21
 
 
22
#line 4 "lexyy.c"
 
23
 
 
24
#define  YY_INT_ALIGNED short int
 
25
 
 
26
/* A lexical scanner generated by flex */
 
27
 
 
28
#define FLEX_SCANNER
 
29
#define YY_FLEX_MAJOR_VERSION 2
 
30
#define YY_FLEX_MINOR_VERSION 5
 
31
#define YY_FLEX_SUBMINOR_VERSION 31
 
32
#if YY_FLEX_SUBMINOR_VERSION > 0
 
33
#define FLEX_BETA
 
34
#endif
 
35
 
 
36
/* First, we deal with  platform-specific or compiler-specific issues. */
 
37
 
 
38
/* begin standard C headers. */
 
39
#include <stdio.h>
 
40
#include <string.h>
 
41
#include <errno.h>
 
42
#include <stdlib.h>
 
43
 
 
44
/* end standard C headers. */
 
45
 
 
46
/* flex integer type definitions */
 
47
 
 
48
#ifndef FLEXINT_H
 
49
#define FLEXINT_H
 
50
 
 
51
/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
 
52
 
 
53
#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
 
54
#include <inttypes.h>
 
55
typedef int8_t flex_int8_t;
 
56
typedef uint8_t flex_uint8_t;
 
57
typedef int16_t flex_int16_t;
 
58
typedef uint16_t flex_uint16_t;
 
59
typedef int32_t flex_int32_t;
 
60
typedef uint32_t flex_uint32_t;
 
61
#else
 
62
typedef signed char flex_int8_t;
 
63
typedef short int flex_int16_t;
 
64
typedef int flex_int32_t;
 
65
typedef unsigned char flex_uint8_t; 
 
66
typedef unsigned short int flex_uint16_t;
 
67
typedef unsigned int flex_uint32_t;
 
68
#endif /* ! C99 */
 
69
 
 
70
/* Limits of integral types. */
 
71
#ifndef INT8_MIN
 
72
#define INT8_MIN               (-128)
 
73
#endif
 
74
#ifndef INT16_MIN
 
75
#define INT16_MIN              (-32767-1)
 
76
#endif
 
77
#ifndef INT32_MIN
 
78
#define INT32_MIN              (-2147483647-1)
 
79
#endif
 
80
#ifndef INT8_MAX
 
81
#define INT8_MAX               (127)
 
82
#endif
 
83
#ifndef INT16_MAX
 
84
#define INT16_MAX              (32767)
 
85
#endif
 
86
#ifndef INT32_MAX
 
87
#define INT32_MAX              (2147483647)
 
88
#endif
 
89
#ifndef UINT8_MAX
 
90
#define UINT8_MAX              (255U)
 
91
#endif
 
92
#ifndef UINT16_MAX
 
93
#define UINT16_MAX             (65535U)
 
94
#endif
 
95
#ifndef UINT32_MAX
 
96
#define UINT32_MAX             (4294967295U)
 
97
#endif
 
98
 
 
99
#endif /* ! FLEXINT_H */
 
100
 
 
101
#ifdef __cplusplus
 
102
 
 
103
/* The "const" storage-class-modifier is valid. */
 
104
#define YY_USE_CONST
 
105
 
 
106
#else   /* ! __cplusplus */
 
107
 
 
108
#if __STDC__
 
109
 
 
110
#define YY_USE_CONST
 
111
 
 
112
#endif  /* __STDC__ */
 
113
#endif  /* ! __cplusplus */
 
114
 
 
115
#ifdef YY_USE_CONST
 
116
#define yyconst const
 
117
#else
 
118
#define yyconst
 
119
#endif
 
120
 
 
121
/* Returned upon end-of-file. */
 
122
#define YY_NULL 0
 
123
 
 
124
/* Promotes a possibly negative, possibly signed char to an unsigned
 
125
 * integer for use as an array index.  If the signed char is negative,
 
126
 * we want to instead treat it as an 8-bit unsigned char, hence the
 
127
 * double cast.
 
128
 */
 
129
#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
 
130
 
 
131
/* Enter a start condition.  This macro really ought to take a parameter,
 
132
 * but we do it the disgusting crufty way forced on us by the ()-less
 
133
 * definition of BEGIN.
 
134
 */
 
135
#define BEGIN (yy_start) = 1 + 2 *
 
136
 
 
137
/* Translate the current start state into a value that can be later handed
 
138
 * to BEGIN to return to the state.  The YYSTATE alias is for lex
 
139
 * compatibility.
 
140
 */
 
141
#define YY_START (((yy_start) - 1) / 2)
 
142
#define YYSTATE YY_START
 
143
 
 
144
/* Action number for EOF rule of a given start state. */
 
145
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
 
146
 
 
147
/* Special action meaning "start processing a new file". */
 
148
#define YY_NEW_FILE yyrestart(yyin  )
 
149
 
 
150
#define YY_END_OF_BUFFER_CHAR 0
 
151
 
 
152
/* Size of default input buffer. */
 
153
#ifndef YY_BUF_SIZE
 
154
#define YY_BUF_SIZE 16384
 
155
#endif
 
156
 
 
157
#ifndef YY_TYPEDEF_YY_BUFFER_STATE
 
158
#define YY_TYPEDEF_YY_BUFFER_STATE
 
159
typedef struct yy_buffer_state *YY_BUFFER_STATE;
 
160
#endif
 
161
 
 
162
static int yyleng;
 
163
 
 
164
static FILE *yyin, *yyout;
 
165
 
 
166
#define EOB_ACT_CONTINUE_SCAN 0
 
167
#define EOB_ACT_END_OF_FILE 1
 
168
#define EOB_ACT_LAST_MATCH 2
 
169
 
 
170
    #define YY_LESS_LINENO(n)
 
171
    
 
172
/* Return all but the first "n" matched characters back to the input stream. */
 
173
#define yyless(n) \
 
174
        do \
 
175
                { \
 
176
                /* Undo effects of setting up yytext. */ \
 
177
        int yyless_macro_arg = (n); \
 
178
        YY_LESS_LINENO(yyless_macro_arg);\
 
179
                *yy_cp = (yy_hold_char); \
 
180
                YY_RESTORE_YY_MORE_OFFSET \
 
181
                (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
 
182
                YY_DO_BEFORE_ACTION; /* set up yytext again */ \
 
183
                } \
 
184
        while ( 0 )
 
185
 
 
186
#define unput(c) yyunput( c, (yytext_ptr)  )
 
187
 
 
188
/* The following is because we cannot portably get our hands on size_t
 
189
 * (without autoconf's help, which isn't available because we want
 
190
 * flex-generated scanners to compile on their own).
 
191
 */
 
192
 
 
193
#ifndef YY_TYPEDEF_YY_SIZE_T
 
194
#define YY_TYPEDEF_YY_SIZE_T
 
195
typedef unsigned int yy_size_t;
 
196
#endif
 
197
 
 
198
#ifndef YY_STRUCT_YY_BUFFER_STATE
 
199
#define YY_STRUCT_YY_BUFFER_STATE
 
200
struct yy_buffer_state
 
201
        {
 
202
        FILE *yy_input_file;
 
203
 
 
204
        char *yy_ch_buf;                /* input buffer */
 
205
        char *yy_buf_pos;               /* current position in input buffer */
 
206
 
 
207
        /* Size of input buffer in bytes, not including room for EOB
 
208
         * characters.
 
209
         */
 
210
        yy_size_t yy_buf_size;
 
211
 
 
212
        /* Number of characters read into yy_ch_buf, not including EOB
 
213
         * characters.
 
214
         */
 
215
        int yy_n_chars;
 
216
 
 
217
        /* Whether we "own" the buffer - i.e., we know we created it,
 
218
         * and can realloc() it to grow it, and should free() it to
 
219
         * delete it.
 
220
         */
 
221
        int yy_is_our_buffer;
 
222
 
 
223
        /* Whether this is an "interactive" input source; if so, and
 
224
         * if we're using stdio for input, then we want to use getc()
 
225
         * instead of fread(), to make sure we stop fetching input after
 
226
         * each newline.
 
227
         */
 
228
        int yy_is_interactive;
 
229
 
 
230
        /* Whether we're considered to be at the beginning of a line.
 
231
         * If so, '^' rules will be active on the next match, otherwise
 
232
         * not.
 
233
         */
 
234
        int yy_at_bol;
 
235
 
 
236
    int yy_bs_lineno; /**< The line count. */
 
237
    int yy_bs_column; /**< The column count. */
 
238
    
 
239
        /* Whether to try to fill the input buffer when we reach the
 
240
         * end of it.
 
241
         */
 
242
        int yy_fill_buffer;
 
243
 
 
244
        int yy_buffer_status;
 
245
 
 
246
#define YY_BUFFER_NEW 0
 
247
#define YY_BUFFER_NORMAL 1
 
248
        /* When an EOF's been seen but there's still some text to process
 
249
         * then we mark the buffer as YY_EOF_PENDING, to indicate that we
 
250
         * shouldn't try reading from the input source any more.  We might
 
251
         * still have a bunch of tokens to match, though, because of
 
252
         * possible backing-up.
 
253
         *
 
254
         * When we actually see the EOF, we change the status to "new"
 
255
         * (via yyrestart()), so that the user can continue scanning by
 
256
         * just pointing yyin at a new input file.
 
257
         */
 
258
#define YY_BUFFER_EOF_PENDING 2
 
259
 
 
260
        };
 
261
#endif /* !YY_STRUCT_YY_BUFFER_STATE */
 
262
 
 
263
/* Stack of input buffers. */
 
264
static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
 
265
static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
 
266
static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
 
267
 
 
268
/* We provide macros for accessing buffer states in case in the
 
269
 * future we want to put the buffer states in a more general
 
270
 * "scanner state".
 
271
 *
 
272
 * Returns the top of the stack, or NULL.
 
273
 */
 
274
#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
 
275
                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
 
276
                          : NULL)
 
277
 
 
278
/* Same as previous macro, but useful when we know that the buffer stack is not
 
279
 * NULL or when we need an lvalue. For internal use only.
 
280
 */
 
281
#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
 
282
 
 
283
/* yy_hold_char holds the character lost when yytext is formed. */
 
284
static char yy_hold_char;
 
285
static int yy_n_chars;          /* number of characters read into yy_ch_buf */
 
286
static int yyleng;
 
287
 
 
288
/* Points to current character in buffer. */
 
289
static char *yy_c_buf_p = (char *) 0;
 
290
static int yy_init = 1;         /* whether we need to initialize */
 
291
static int yy_start = 0;        /* start state number */
 
292
 
 
293
/* Flag which is used to allow yywrap()'s to do buffer switches
 
294
 * instead of setting up a fresh yyin.  A bit of a hack ...
 
295
 */
 
296
static int yy_did_buffer_switch_on_eof;
 
297
 
 
298
static void yyrestart (FILE *input_file  );
 
299
__attribute__((unused)) static void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
 
300
static YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
 
301
static void yy_delete_buffer (YY_BUFFER_STATE b  );
 
302
static void yy_flush_buffer (YY_BUFFER_STATE b  );
 
303
__attribute__((unused)) static void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
 
304
__attribute__((unused)) static void yypop_buffer_state (void );
 
305
 
 
306
static void yyensure_buffer_stack (void );
 
307
static void yy_load_buffer_state (void );
 
308
static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
309
 
 
310
#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
 
311
 
 
312
YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
 
313
YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
 
314
YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );
 
315
 
 
316
static void *yyalloc (yy_size_t  );
 
317
static void *yyrealloc (void *,yy_size_t  );
 
318
static void yyfree (void *  );
 
319
 
 
320
#define yy_new_buffer yy_create_buffer
 
321
 
 
322
#define yy_set_interactive(is_interactive) \
 
323
        { \
 
324
        if ( ! YY_CURRENT_BUFFER ){ \
 
325
        yyensure_buffer_stack (); \
 
326
                YY_CURRENT_BUFFER_LVALUE =    \
 
327
            yy_create_buffer(yyin,YY_BUF_SIZE ); \
 
328
        } \
 
329
        YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
 
330
        }
 
331
 
 
332
#define yy_set_bol(at_bol) \
 
333
        { \
 
334
        if ( ! YY_CURRENT_BUFFER ){\
 
335
        yyensure_buffer_stack (); \
 
336
                YY_CURRENT_BUFFER_LVALUE =    \
 
337
            yy_create_buffer(yyin,YY_BUF_SIZE ); \
 
338
        } \
 
339
        YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
 
340
        }
 
341
 
 
342
#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
 
343
 
 
344
/* Begin user sect3 */
 
345
 
 
346
#define yywrap(n) 1
 
347
#define YY_SKIP_YYWRAP
 
348
 
 
349
typedef unsigned char YY_CHAR;
 
350
 
 
351
static FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
 
352
 
 
353
typedef int yy_state_type;
 
354
 
 
355
static int yylineno;
 
356
 
 
357
static int yylineno = 1;
 
358
 
 
359
static char *yytext;
 
360
#define yytext_ptr yytext
 
361
 
 
362
static yy_state_type yy_get_previous_state (void );
 
363
static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
 
364
static int yy_get_next_buffer (void );
 
365
static void yy_fatal_error (yyconst char msg[]  );
 
366
 
 
367
/* Done after the current pattern has been matched and before the
 
368
 * corresponding action - sets up yytext.
 
369
 */
 
370
#define YY_DO_BEFORE_ACTION \
 
371
        (yytext_ptr) = yy_bp; \
 
372
        yyleng = (size_t) (yy_cp - yy_bp); \
 
373
        (yy_hold_char) = *yy_cp; \
 
374
        *yy_cp = '\0'; \
 
375
        (yy_c_buf_p) = yy_cp;
 
376
 
 
377
#define YY_NUM_RULES 119
 
378
#define YY_END_OF_BUFFER 120
 
379
/* This struct is not used in this scanner,
 
380
   but its presence is necessary. */
 
381
struct yy_trans_info
 
382
        {
 
383
        flex_int32_t yy_verify;
 
384
        flex_int32_t yy_nxt;
 
385
        };
 
386
static yyconst flex_int16_t yy_accept[399] =
 
387
    {   0,
 
388
        0,    0,  114,  114,    0,    0,    0,    0,  120,  118,
 
389
      117,  117,    8,  118,  109,    5,   98,  104,  107,  105,
 
390
      102,  106,  118,  108,    1,  118,  103,  101,   99,  100,
 
391
      112,   92,   92,   92,   92,   92,   92,   92,   92,   92,
 
392
       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
 
393
      110,  111,  114,  115,    6,    7,    9,   10,  117,    4,
 
394
       93,  113,    2,    1,    3,   94,   95,   97,   96,   92,
 
395
       92,   92,   92,   92,   92,   44,   92,   92,   92,   92,
 
396
       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
 
397
       92,   92,   28,   17,   25,   92,   92,   92,   92,   92,
 
398
 
 
399
       54,   61,   92,   14,   92,   92,   92,   92,   92,   92,
 
400
       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
 
401
       92,   92,  114,  115,  115,  116,    6,    7,    9,   10,
 
402
        2,   13,   45,   92,   92,   92,   92,   92,   92,   92,
 
403
       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
 
404
       92,   27,   92,   92,   92,   41,   92,   92,   92,   92,
 
405
       21,   92,   92,   92,   92,   15,   92,   92,   92,   18,
 
406
       92,   92,   92,   92,   92,   80,   92,   92,   92,   51,
 
407
       92,   12,   92,   36,   92,   92,   92,   92,   92,   92,
 
408
       92,   92,   92,   92,   92,   92,   92,   92,   20,   24,
 
409
 
 
410
       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
 
411
       46,   92,   92,   30,   92,   87,   92,   92,   39,   92,
 
412
       92,   92,   92,   92,   48,   92,   89,   32,   91,   92,
 
413
       11,   64,   92,   92,   92,   42,   92,   92,   92,   92,
 
414
       92,   92,   92,   92,   92,   92,   29,   92,   92,   92,
 
415
       92,   92,   92,   92,   92,   92,   85,   92,   26,   92,
 
416
       66,   92,   92,   92,   37,   92,   92,   92,   92,   92,
 
417
       92,   92,   31,   65,   23,   92,   57,   92,   75,   92,
 
418
       92,   92,   43,   92,   92,   92,   92,   92,   92,   92,
 
419
       92,   90,   92,   92,   56,   92,   92,   92,   92,   92,
 
420
 
 
421
       92,   92,   40,   33,   79,   19,   92,   83,   74,   55,
 
422
       92,   63,   92,   52,   92,   92,   92,   47,   92,   76,
 
423
       92,   78,   92,   92,   34,   92,   92,   92,   35,   72,
 
424
       92,   92,   92,   92,   58,   92,   50,   49,   92,   92,
 
425
       53,   62,   92,   92,   92,   22,   92,   92,   73,   81,
 
426
       92,   92,   77,   92,   68,   92,   92,   92,   92,   38,
 
427
       92,   88,   67,   92,   84,   92,   92,   92,   86,   92,
 
428
       59,   92,   16,   92,   70,   69,   92,   92,   82,   92,
 
429
       92,   92,   92,   92,   92,   92,   92,   92,   92,   71,
 
430
       92,   92,   92,   92,   92,   92,   60,    0
 
431
 
 
432
    } ;
 
433
 
 
434
static yyconst flex_int32_t yy_ec[256] =
 
435
    {   0,
 
436
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
 
437
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
438
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
439
        1,    2,    1,    4,    1,    5,    6,    1,    7,    8,
 
440
        9,   10,   11,   12,   13,   14,   15,   16,   16,   16,
 
441
       16,   16,   16,   16,   16,   16,   16,   17,   18,   19,
 
442
       20,   21,   22,    1,   23,   24,   25,   26,   27,   28,
 
443
       29,   30,   31,   32,   33,   34,   35,   36,   37,   38,
 
444
       39,   40,   41,   42,   43,   44,   45,   46,   47,   32,
 
445
        1,    1,    1,    1,   48,    1,   32,   32,   32,   32,
 
446
 
 
447
       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
 
448
       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
 
449
       32,   32,   49,    1,   50,    1,    1,    1,    1,    1,
 
450
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
451
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
452
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
453
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
454
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
455
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
456
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
457
 
 
458
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
459
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
460
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
461
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
462
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
463
        1,    1,    1,    1,    1
 
464
    } ;
 
465
 
 
466
static yyconst flex_int32_t yy_meta[51] =
 
467
    {   0,
 
468
        1,    1,    1,    2,    1,    1,    3,    1,    1,    4,
 
469
        1,    1,    1,    1,    1,    5,    1,    1,    1,    6,
 
470
        1,    1,    5,    5,    5,    5,    5,    5,    5,    5,
 
471
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
 
472
        5,    5,    5,    5,    5,    5,    5,    5,    1,    1
 
473
    } ;
 
474
 
 
475
static yyconst flex_int16_t yy_base[409] =
 
476
    {   0,
 
477
        0,    0,  437,  436,  438,  437,  439,  438,  441,  448,
 
478
       49,   51,  448,    0,  448,  448,  448,  448,  448,  448,
 
479
      448,  448,  426,  429,   41,  418,  448,   38,  448,  417,
 
480
      448,   20,   33,   32,   46,   40,   44,    0,   54,   52,
 
481
      399,   48,   60,  395,   65,   67,   81,   27,  411,   75,
 
482
      448,  448,    0,   98,    0,  426,    0,  428,  113,    0,
 
483
      448,  448,  415,   54,  410,  448,  448,  448,  448,    0,
 
484
      403,   68,  399,  391,  389,    0,  402,   80,   84,  397,
 
485
      383,   96,  381,  394,  379,  393,  387,  375,  379,  375,
 
486
      377,  377,    0,   98,    0,  376,   97,  385,  368,  375,
 
487
 
 
488
        0,    0,  381,  381,  364,   94,  103,  379,   98,   65,
 
489
      381,  369,  109,  361,  377,  373,  351,   97,  372,  363,
 
490
      115,  356,    0,  137,  138,  448,    0,  388,    0,  390,
 
491
      377,    0,    0,  365,  360,  367,  365,  348,  346,  345,
 
492
      350,  359,  347,  359,   95,  347,  353,  354,  336,  336,
 
493
      123,    0,  334,  350,  351,    0,  338,  347,  344,  122,
 
494
      124,  341,  336,  330,  340,  338,  331,  328,  336,    0,
 
495
      326,  336,  334,  325,  315,  309,  322,  307,  327,    0,
 
496
      313,    0,  311,    0,  325,  316,  313,  131,  309,  316,
 
497
      323,  302,  304,  309,  309,  301,  304,  299,    0,    0,
 
498
 
 
499
      311,  295,  305,  312,  292,  291,  305,  294,  307,  287,
 
500
        0,  297,  279,    0,  298,    0,  295,  282,    0,  281,
 
501
      276,  281,  280,  290,    0,  276,    0,    0,    0,  280,
 
502
        0,    0,  276,  273,  287,    0,  272,  272,  270,  286,
 
503
      271,  283,  280,  264,  282,  277,    0,  272,  272,  258,
 
504
      257,  270,  256,  270,  269,  268,    0,  252,    0,  246,
 
505
        0,  265,  249,  248,    0,  262,  252,  247,  246,  258,
 
506
      248,  247,    0,    0,    0,  251,    0,  239,    0,  253,
 
507
      249,  235,    0,  249,  250,  233,  238,  231,  249,  231,
 
508
      228,    0,  229,  226,    0,  231,  243,  230,  237,  227,
 
509
 
 
510
      235,  220,    0,    0,    0,  212,  219,    0,    0,    0,
 
511
      216,    0,  230,    0,  231,  218,  217,    0,  213,    0,
 
512
      216,    0,  208,  210,    0,  209,  223,  216,    0,    0,
 
513
      219,  222,  204,  219,    0,  215,    0,    0,  199,  213,
 
514
        0,    0,  197,  196,  201,    0,  210,  195,    0,    0,
 
515
      201,  197,    0,  192,    0,  204,  204,  192,  202,    0,
 
516
      179,    0,    0,  199,    0,  183,  177,  183,    0,  174,
 
517
        0,  193,    0,  192,    0,    0,  183,  187,    0,  174,
 
518
      174,  180,  166,  189,  181,  180,  166,  151,  118,    0,
 
519
      130,  136,  127,  123,  119,  111,    0,  448,  167,  173,
 
520
 
 
521
      179,  152,  181,  124,  187,  193,  199,  205
 
522
    } ;
 
523
 
 
524
static yyconst flex_int16_t yy_def[409] =
 
525
    {   0,
 
526
      398,    1,  399,  399,  400,  400,  401,  401,  398,  398,
 
527
      398,  398,  398,  402,  398,  398,  398,  398,  398,  398,
 
528
      398,  398,  398,  398,  398,  403,  398,  398,  398,  398,
 
529
      398,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
530
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
531
      398,  398,  405,  406,  407,  398,  408,  398,  398,  402,
 
532
      398,  398,  398,  398,  403,  398,  398,  398,  398,  404,
 
533
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
534
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
535
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
536
 
 
537
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
538
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
539
      404,  404,  405,  406,  406,  398,  407,  398,  408,  398,
 
540
      398,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
541
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
542
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
543
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
544
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
545
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
546
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
547
 
 
548
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
549
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
550
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
551
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
552
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
553
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
554
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
555
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
556
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
557
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
558
 
 
559
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
560
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
561
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
562
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
563
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
564
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
565
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
566
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
567
      404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
 
568
      404,  404,  404,  404,  404,  404,  404,    0,  398,  398,
 
569
 
 
570
      398,  398,  398,  398,  398,  398,  398,  398
 
571
    } ;
 
572
 
 
573
static yyconst flex_int16_t yy_nxt[499] =
 
574
    {   0,
 
575
       10,   11,   12,   13,   14,   15,   16,   17,   18,   19,
 
576
       20,   21,   22,   23,   24,   25,   26,   27,   28,   29,
 
577
       30,   31,   32,   33,   34,   35,   36,   37,   38,   38,
 
578
       39,   38,   38,   40,   41,   42,   43,   44,   38,   45,
 
579
       46,   47,   48,   49,   50,   38,   38,   38,   51,   52,
 
580
       59,   59,   59,   59,   63,   71,   64,   67,   68,   73,
 
581
       72,   77,  118,   74,  119,   78,   75,   63,   79,   64,
 
582
       88,   80,   82,   85,   81,   86,   83,   89,   96,   76,
 
583
       90,   93,   84,   91,   99,   87,   92,  101,   97,   94,
 
584
      100,  107,  133,  110,   95,  102,  111,  103,  179,  104,
 
585
 
 
586
      108,  109,  105,  115,  121,  112,  180,  125,  134,  113,
 
587
      116,  122,  126,  114,   59,   59,  139,  117,  141,  142,
 
588
      146,  163,  140,  159,  171,  173,  143,  189,   70,  147,
 
589
      172,  177,  183,  164,  207,  208,  148,  190,  160,  161,
 
590
      174,  193,  178,  184,  175,  194,  398,  125,  222,  214,
 
591
      224,  398,  126,  215,  248,  249,   60,  397,  396,  395,
 
592
      225,  394,  393,  223,  392,  391,  250,   53,   53,   53,
 
593
       53,   53,   53,   55,   55,   55,   55,   55,   55,   57,
 
594
       57,   57,   57,   57,   57,   65,   65,  123,  123,  123,
 
595
      390,  123,  123,  124,  124,  124,  124,  124,  124,  127,
 
596
 
 
597
      127,  389,  127,  127,  127,  129,  388,  129,  129,  129,
 
598
      129,  387,  386,  385,  384,  383,  382,  381,  380,  379,
 
599
      378,  377,  376,  375,  374,  373,  372,  371,  370,  369,
 
600
      368,  367,  366,  365,  364,  363,  362,  361,  360,  359,
 
601
      358,  357,  356,  355,  354,  353,  352,  351,  350,  349,
 
602
      348,  347,  346,  345,  344,  343,  342,  341,  340,  339,
 
603
      338,  337,  336,  335,  334,  333,  332,  331,  330,  329,
 
604
      328,  327,  326,  325,  324,  323,  322,  321,  320,  319,
 
605
      318,  317,  316,  315,  314,  313,  312,  311,  310,  309,
 
606
      308,  307,  306,  305,  304,  303,  302,  301,  300,  299,
 
607
 
 
608
      298,  297,  296,  295,  294,  293,  292,  291,  290,  289,
 
609
      288,  287,  286,  285,  284,  283,  282,  281,  280,  279,
 
610
      278,  277,  276,  275,  274,  273,  272,  271,  270,  269,
 
611
      268,  267,  266,  265,  264,  263,  262,  261,  260,  259,
 
612
      258,  257,  256,  255,  254,  253,  252,  251,  247,  246,
 
613
      245,  244,  243,  242,  241,  240,  239,  238,  237,  236,
 
614
      235,  234,  233,  232,  231,  230,  229,  228,  227,  226,
 
615
      221,  220,  219,  218,  217,  216,  213,  212,  211,  210,
 
616
      209,  206,  205,  204,  203,  202,  201,  200,  199,  198,
 
617
      197,  196,  131,  130,  128,  195,  192,  191,  188,  187,
 
618
 
 
619
      186,  185,  182,  181,  176,  170,  169,  168,  167,  166,
 
620
      165,  162,  158,  157,  156,  155,  154,  153,  152,  151,
 
621
      150,  149,  145,  144,  138,  137,  136,  135,  132,  398,
 
622
      131,  130,  128,  120,  106,   98,   69,   66,   62,   61,
 
623
      398,   58,   58,   56,   56,   54,   54,    9,  398,  398,
 
624
      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
 
625
      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
 
626
      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
 
627
      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
 
628
      398,  398,  398,  398,  398,  398,  398,  398
 
629
 
 
630
    } ;
 
631
 
 
632
static yyconst flex_int16_t yy_chk[499] =
 
633
    {   0,
 
634
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
635
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
636
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
637
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
638
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
639
       11,   11,   12,   12,   25,   32,   25,   28,   28,   33,
 
640
       32,   34,   48,   33,   48,   34,   33,   64,   34,   64,
 
641
       37,   34,   35,   36,   34,   36,   35,   37,   40,   33,
 
642
       37,   39,   35,   37,   42,   36,   37,   43,   40,   39,
 
643
       42,   45,   72,   46,   39,   43,   46,   43,  110,   43,
 
644
 
 
645
       45,   45,   43,   47,   50,   46,  110,   54,   72,   46,
 
646
       47,   50,   54,   46,   59,   59,   78,   47,   79,   79,
 
647
       82,   97,   78,   94,  106,  107,   79,  118,  404,   82,
 
648
      106,  109,  113,   97,  145,  145,   82,  118,   94,   94,
 
649
      107,  121,  109,  113,  107,  121,  124,  125,  160,  151,
 
650
      161,  124,  125,  151,  188,  188,  402,  396,  395,  394,
 
651
      161,  393,  392,  160,  391,  389,  188,  399,  399,  399,
 
652
      399,  399,  399,  400,  400,  400,  400,  400,  400,  401,
 
653
      401,  401,  401,  401,  401,  403,  403,  405,  405,  405,
 
654
      388,  405,  405,  406,  406,  406,  406,  406,  406,  407,
 
655
 
 
656
      407,  387,  407,  407,  407,  408,  386,  408,  408,  408,
 
657
      408,  385,  384,  383,  382,  381,  380,  378,  377,  374,
 
658
      372,  370,  368,  367,  366,  364,  361,  359,  358,  357,
 
659
      356,  354,  352,  351,  348,  347,  345,  344,  343,  340,
 
660
      339,  336,  334,  333,  332,  331,  328,  327,  326,  324,
 
661
      323,  321,  319,  317,  316,  315,  313,  311,  307,  306,
 
662
      302,  301,  300,  299,  298,  297,  296,  294,  293,  291,
 
663
      290,  289,  288,  287,  286,  285,  284,  282,  281,  280,
 
664
      278,  276,  272,  271,  270,  269,  268,  267,  266,  264,
 
665
      263,  262,  260,  258,  256,  255,  254,  253,  252,  251,
 
666
 
 
667
      250,  249,  248,  246,  245,  244,  243,  242,  241,  240,
 
668
      239,  238,  237,  235,  234,  233,  230,  226,  224,  223,
 
669
      222,  221,  220,  218,  217,  215,  213,  212,  210,  209,
 
670
      208,  207,  206,  205,  204,  203,  202,  201,  198,  197,
 
671
      196,  195,  194,  193,  192,  191,  190,  189,  187,  186,
 
672
      185,  183,  181,  179,  178,  177,  176,  175,  174,  173,
 
673
      172,  171,  169,  168,  167,  166,  165,  164,  163,  162,
 
674
      159,  158,  157,  155,  154,  153,  150,  149,  148,  147,
 
675
      146,  144,  143,  142,  141,  140,  139,  138,  137,  136,
 
676
      135,  134,  131,  130,  128,  122,  120,  119,  117,  116,
 
677
 
 
678
      115,  114,  112,  111,  108,  105,  104,  103,  100,   99,
 
679
       98,   96,   92,   91,   90,   89,   88,   87,   86,   85,
 
680
       84,   83,   81,   80,   77,   75,   74,   73,   71,   65,
 
681
       63,   58,   56,   49,   44,   41,   30,   26,   24,   23,
 
682
        9,    8,    7,    6,    5,    4,    3,  398,  398,  398,
 
683
      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
 
684
      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
 
685
      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
 
686
      398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
 
687
      398,  398,  398,  398,  398,  398,  398,  398
 
688
 
 
689
    } ;
 
690
 
 
691
static yy_state_type yy_last_accepting_state;
 
692
static char *yy_last_accepting_cpos;
 
693
 
 
694
static int yy_flex_debug;
 
695
static int yy_flex_debug = 0;
 
696
 
 
697
/* The intent behind this definition is that it'll catch
 
698
 * any uses of REJECT which flex missed.
 
699
 */
 
700
#define REJECT reject_used_but_not_detected
 
701
#define yymore() yymore_used_but_not_detected
 
702
#define YY_MORE_ADJ 0
 
703
#define YY_RESTORE_YY_MORE_OFFSET
 
704
static char *yytext;
 
705
#line 1 "pars0lex.l"
 
706
/**************************************************//**
 
707
SQL parser lexical analyzer: input file for the GNU Flex lexer generator
 
708
 
 
709
(c) 1997 Innobase Oy
 
710
 
 
711
Created 12/14/1997 Heikki Tuuri
 
712
Published under the GPL version 2
 
713
 
 
714
The InnoDB parser is frozen because MySQL takes care of SQL parsing.
 
715
Therefore we normally keep the InnoDB parser C files as they are, and do
 
716
not automatically generate them from pars0grm.y and pars0lex.l.
 
717
 
 
718
How to make the InnoDB parser and lexer C files:
 
719
 
 
720
1. Run ./make_flex.sh to generate lexer files.
 
721
 
 
722
2. Run ./make_bison.sh to generate parser files.
 
723
 
 
724
These instructions seem to work at least with bison-1.875d and flex-2.5.31 on
 
725
Linux.
 
726
*******************************************************/
 
727
#define YY_NO_INPUT 1
 
728
#define YY_NO_UNISTD_H 1
 
729
#line 38 "pars0lex.l"
 
730
#define YYSTYPE que_node_t*
 
731
 
 
732
#include "univ.i"
 
733
#include "pars0pars.h"
 
734
#include "pars0grm.h"
 
735
#include "pars0sym.h"
 
736
#include "mem0mem.h"
 
737
#include "os0proc.h"
 
738
 
 
739
#define malloc(A)       ut_malloc(A)
 
740
#define free(A)         ut_free(A)
 
741
#define realloc(P, A)   ut_realloc(P, A)
 
742
#define exit(A)         ut_error
 
743
 
 
744
#define YY_INPUT(buf, result, max_size) pars_get_lex_chars(buf, &result, max_size)
 
745
 
 
746
/* String buffer for removing quotes */
 
747
static ulint    stringbuf_len_alloc = 0; /* Allocated length */
 
748
static ulint    stringbuf_len = 0; /* Current length */
 
749
static char*    stringbuf; /* Start of buffer */
 
750
/** Appends a string to the buffer. */
 
751
static
 
752
void
 
753
string_append(
 
754
/*==========*/
 
755
        const char*     str,    /*!< in: string to be appended */
 
756
        ulint           len)    /*!< in: length of the string */
 
757
{
 
758
        if (stringbuf == NULL) {
 
759
                stringbuf = malloc(1);
 
760
                stringbuf_len_alloc = 1;
 
761
        }
 
762
 
 
763
        if (stringbuf_len + len > stringbuf_len_alloc) {
 
764
                while (stringbuf_len + len > stringbuf_len_alloc) {
 
765
                        stringbuf_len_alloc <<= 1;
 
766
                }
 
767
                stringbuf = realloc(stringbuf, stringbuf_len_alloc);
 
768
        }
 
769
 
 
770
        memcpy(stringbuf + stringbuf_len, str, len);
 
771
        stringbuf_len += len;
 
772
}
 
773
 
 
774
 
 
775
 
 
776
 
 
777
#line 759 "lexyy.c"
 
778
 
 
779
#define INITIAL 0
 
780
#define comment 1
 
781
#define quoted 2
 
782
#define id 3
 
783
 
 
784
#ifndef YY_NO_UNISTD_H
 
785
/* Special case for "unistd.h", since it is non-ANSI. We include it way
 
786
 * down here because we want the user's section 1 to have been scanned first.
 
787
 * The user has a chance to override it with an option.
 
788
 */
 
789
#include <unistd.h>
 
790
#endif
 
791
 
 
792
#ifndef YY_EXTRA_TYPE
 
793
#define YY_EXTRA_TYPE void *
 
794
#endif
 
795
 
 
796
/* Macros after this point can all be overridden by user definitions in
 
797
 * section 1.
 
798
 */
 
799
 
 
800
#ifndef YY_SKIP_YYWRAP
 
801
#ifdef __cplusplus
 
802
extern "C" int yywrap (void );
 
803
#else
 
804
extern int yywrap (void );
 
805
#endif
 
806
#endif
 
807
 
 
808
#ifndef yytext_ptr
 
809
static void yy_flex_strncpy (char *,yyconst char *,int );
 
810
#endif
 
811
 
 
812
#ifdef YY_NEED_STRLEN
 
813
static int yy_flex_strlen (yyconst char * );
 
814
#endif
 
815
 
 
816
#ifndef YY_NO_INPUT
 
817
 
 
818
#ifdef __cplusplus
 
819
static int yyinput (void );
 
820
#else
 
821
static int input (void );
 
822
#endif
 
823
 
 
824
#endif
 
825
 
 
826
/* Amount of stuff to slurp up with each read. */
 
827
#ifndef YY_READ_BUF_SIZE
 
828
#define YY_READ_BUF_SIZE 8192
 
829
#endif
 
830
 
 
831
/* Copy whatever the last rule matched to the standard output. */
 
832
#ifndef ECHO
 
833
/* This used to be an fputs(), but since the string might contain NUL's,
 
834
 * we now use fwrite().
 
835
 */
 
836
#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
 
837
#endif
 
838
 
 
839
/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
 
840
 * is returned in "result".
 
841
 */
 
842
#ifndef YY_INPUT
 
843
#define YY_INPUT(buf,result,max_size) \
 
844
        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
 
845
                { \
 
846
                int c = '*'; \
 
847
                size_t n; \
 
848
                for ( n = 0; n < max_size && \
 
849
                             (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
 
850
                        buf[n] = (char) c; \
 
851
                if ( c == '\n' ) \
 
852
                        buf[n++] = (char) c; \
 
853
                if ( c == EOF && ferror( yyin ) ) \
 
854
                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
 
855
                result = n; \
 
856
                } \
 
857
        else \
 
858
                { \
 
859
                errno=0; \
 
860
                while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
 
861
                        { \
 
862
                        if( errno != EINTR) \
 
863
                                { \
 
864
                                YY_FATAL_ERROR( "input in flex scanner failed" ); \
 
865
                                break; \
 
866
                                } \
 
867
                        errno=0; \
 
868
                        clearerr(yyin); \
 
869
                        } \
 
870
                }\
 
871
\
 
872
 
 
873
#endif
 
874
 
 
875
/* No semi-colon after return; correct usage is to write "yyterminate();" -
 
876
 * we don't want an extra ';' after the "return" because that will cause
 
877
 * some compilers to complain about unreachable statements.
 
878
 */
 
879
#ifndef yyterminate
 
880
#define yyterminate() return YY_NULL
 
881
#endif
 
882
 
 
883
/* Number of entries by which start-condition stack grows. */
 
884
#ifndef YY_START_STACK_INCR
 
885
#define YY_START_STACK_INCR 25
 
886
#endif
 
887
 
 
888
/* Report a fatal error. */
 
889
#ifndef YY_FATAL_ERROR
 
890
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
 
891
#endif
 
892
 
 
893
/* end tables serialization structures and prototypes */
 
894
 
 
895
/* Default declaration of generated scanner - a define so the user can
 
896
 * easily add parameters.
 
897
 */
 
898
#ifndef YY_DECL
 
899
#define YY_DECL_IS_OURS 1
 
900
 
 
901
UNIV_INTERN int yylex (void);
 
902
 
 
903
#define YY_DECL UNIV_INTERN int yylex (void)
 
904
#endif /* !YY_DECL */
 
905
 
 
906
/* Code executed at the beginning of each rule, after yytext and yyleng
 
907
 * have been set up.
 
908
 */
 
909
#ifndef YY_USER_ACTION
 
910
#define YY_USER_ACTION
 
911
#endif
 
912
 
 
913
/* Code executed at the end of each rule. */
 
914
#ifndef YY_BREAK
 
915
#define YY_BREAK break;
 
916
#endif
 
917
 
 
918
#define YY_RULE_SETUP \
 
919
        YY_USER_ACTION
 
920
 
 
921
/** The main scanner function which does all the work.
 
922
 */
 
923
YY_DECL
 
924
{
 
925
        register yy_state_type yy_current_state;
 
926
        register char *yy_cp, *yy_bp;
 
927
        register int yy_act;
 
928
    
 
929
#line 92 "pars0lex.l"
 
930
 
 
931
 
 
932
#line 914 "lexyy.c"
 
933
 
 
934
        if ( (yy_init) )
 
935
                {
 
936
                (yy_init) = 0;
 
937
 
 
938
#ifdef YY_USER_INIT
 
939
                YY_USER_INIT;
 
940
#endif
 
941
 
 
942
                if ( ! (yy_start) )
 
943
                        (yy_start) = 1; /* first start state */
 
944
 
 
945
                if ( ! yyin )
 
946
                        yyin = stdin;
 
947
 
 
948
                if ( ! yyout )
 
949
                        yyout = stdout;
 
950
 
 
951
                if ( ! YY_CURRENT_BUFFER ) {
 
952
                        yyensure_buffer_stack ();
 
953
                        YY_CURRENT_BUFFER_LVALUE =
 
954
                                yy_create_buffer(yyin,YY_BUF_SIZE );
 
955
                }
 
956
 
 
957
                yy_load_buffer_state( );
 
958
                }
 
959
 
 
960
        while ( 1 )             /* loops until end-of-file is reached */
 
961
                {
 
962
                yy_cp = (yy_c_buf_p);
 
963
 
 
964
                /* Support of yytext. */
 
965
                *yy_cp = (yy_hold_char);
 
966
 
 
967
                /* yy_bp points to the position in yy_ch_buf of the start of
 
968
                 * the current run.
 
969
                 */
 
970
                yy_bp = yy_cp;
 
971
 
 
972
                yy_current_state = (yy_start);
 
973
yy_match:
 
974
                do
 
975
                        {
 
976
                        register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
 
977
                        if ( yy_accept[yy_current_state] )
 
978
                                {
 
979
                                (yy_last_accepting_state) = yy_current_state;
 
980
                                (yy_last_accepting_cpos) = yy_cp;
 
981
                                }
 
982
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 
983
                                {
 
984
                                yy_current_state = (int) yy_def[yy_current_state];
 
985
                                if ( yy_current_state >= 399 )
 
986
                                        yy_c = yy_meta[(unsigned int) yy_c];
 
987
                                }
 
988
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 
989
                        ++yy_cp;
 
990
                        }
 
991
                while ( yy_current_state != 398 );
 
992
                yy_cp = (yy_last_accepting_cpos);
 
993
                yy_current_state = (yy_last_accepting_state);
 
994
 
 
995
yy_find_action:
 
996
                yy_act = yy_accept[yy_current_state];
 
997
 
 
998
                YY_DO_BEFORE_ACTION;
 
999
 
 
1000
do_action:      /* This label is used only to access EOF actions. */
 
1001
 
 
1002
                switch ( yy_act )
 
1003
        { /* beginning of action switch */
 
1004
                        case 0: /* must back up */
 
1005
                        /* undo the effects of YY_DO_BEFORE_ACTION */
 
1006
                        *yy_cp = (yy_hold_char);
 
1007
                        yy_cp = (yy_last_accepting_cpos);
 
1008
                        yy_current_state = (yy_last_accepting_state);
 
1009
                        goto yy_find_action;
 
1010
 
 
1011
case 1:
 
1012
YY_RULE_SETUP
 
1013
#line 94 "pars0lex.l"
 
1014
{
 
1015
                        yylval = sym_tab_add_int_lit(pars_sym_tab_global,
 
1016
                                                                atoi(yytext));
 
1017
                        return(PARS_INT_LIT);
 
1018
}
 
1019
        YY_BREAK
 
1020
case 2:
 
1021
YY_RULE_SETUP
 
1022
#line 100 "pars0lex.l"
 
1023
{
 
1024
                        ut_error;       /* not implemented */
 
1025
 
 
1026
                        return(PARS_FLOAT_LIT);
 
1027
}
 
1028
        YY_BREAK
 
1029
case 3:
 
1030
YY_RULE_SETUP
 
1031
#line 106 "pars0lex.l"
 
1032
{
 
1033
                        ulint   type;
 
1034
 
 
1035
                        yylval = sym_tab_add_bound_lit(pars_sym_tab_global,
 
1036
                                yytext + 1, &type);
 
1037
 
 
1038
                        return((int) type);
 
1039
}
 
1040
        YY_BREAK
 
1041
case 4:
 
1042
YY_RULE_SETUP
 
1043
#line 115 "pars0lex.l"
 
1044
{
 
1045
                        yylval = sym_tab_add_bound_id(pars_sym_tab_global,
 
1046
                                yytext + 1);
 
1047
 
 
1048
                        return(PARS_ID_TOKEN);
 
1049
}
 
1050
        YY_BREAK
 
1051
case 5:
 
1052
YY_RULE_SETUP
 
1053
#line 122 "pars0lex.l"
 
1054
{
 
1055
/* Quoted character string literals are handled in an explicit
 
1056
start state 'quoted'.  This state is entered and the buffer for
 
1057
the scanned string is emptied upon encountering a starting quote.
 
1058
 
 
1059
In the state 'quoted', only two actions are possible (defined below). */
 
1060
                        BEGIN(quoted);
 
1061
                        stringbuf_len = 0;
 
1062
}
 
1063
        YY_BREAK
 
1064
case 6:
 
1065
/* rule 6 can match eol */
 
1066
YY_RULE_SETUP
 
1067
#line 131 "pars0lex.l"
 
1068
{
 
1069
                        /* Got a sequence of characters other than "'":
 
1070
                        append to string buffer */
 
1071
                        string_append(yytext, yyleng);
 
1072
}
 
1073
        YY_BREAK
 
1074
case 7:
 
1075
YY_RULE_SETUP
 
1076
#line 136 "pars0lex.l"
 
1077
{
 
1078
                        /* Got a sequence of "'" characters:
 
1079
                        append half of them to string buffer,
 
1080
                        as "''" represents a single "'".
 
1081
                        We apply truncating division,
 
1082
                        so that "'''" will result in "'". */
 
1083
 
 
1084
                        string_append(yytext, yyleng / 2);
 
1085
 
 
1086
                        /* If we got an odd number of quotes, then the
 
1087
                        last quote we got is the terminating quote.
 
1088
                        At the end of the string, we return to the
 
1089
                        initial start state and report the scanned
 
1090
                        string literal. */
 
1091
 
 
1092
                        if (yyleng % 2) {
 
1093
                                BEGIN(INITIAL);
 
1094
                                yylval = sym_tab_add_str_lit(
 
1095
                                        pars_sym_tab_global,
 
1096
                                        (byte*) stringbuf, stringbuf_len);
 
1097
                                return(PARS_STR_LIT);
 
1098
                        }
 
1099
}
 
1100
        YY_BREAK
 
1101
case 8:
 
1102
YY_RULE_SETUP
 
1103
#line 160 "pars0lex.l"
 
1104
{
 
1105
/* Quoted identifiers are handled in an explicit start state 'id'.
 
1106
This state is entered and the buffer for the scanned string is emptied
 
1107
upon encountering a starting quote.
 
1108
 
 
1109
In the state 'id', only two actions are possible (defined below). */
 
1110
                        BEGIN(id);
 
1111
                        stringbuf_len = 0;
 
1112
}
 
1113
        YY_BREAK
 
1114
case 9:
 
1115
/* rule 9 can match eol */
 
1116
YY_RULE_SETUP
 
1117
#line 169 "pars0lex.l"
 
1118
{
 
1119
                        /* Got a sequence of characters other than '"':
 
1120
                        append to string buffer */
 
1121
                        string_append(yytext, yyleng);
 
1122
}
 
1123
        YY_BREAK
 
1124
case 10:
 
1125
YY_RULE_SETUP
 
1126
#line 174 "pars0lex.l"
 
1127
{
 
1128
                        /* Got a sequence of '"' characters:
 
1129
                        append half of them to string buffer,
 
1130
                        as '""' represents a single '"'.
 
1131
                        We apply truncating division,
 
1132
                        so that '"""' will result in '"'. */
 
1133
 
 
1134
                        string_append(yytext, yyleng / 2);
 
1135
 
 
1136
                        /* If we got an odd number of quotes, then the
 
1137
                        last quote we got is the terminating quote.
 
1138
                        At the end of the string, we return to the
 
1139
                        initial start state and report the scanned
 
1140
                        identifier. */
 
1141
 
 
1142
                        if (yyleng % 2) {
 
1143
                                BEGIN(INITIAL);
 
1144
                                yylval = sym_tab_add_id(
 
1145
                                        pars_sym_tab_global,
 
1146
                                        (byte*) stringbuf, stringbuf_len);
 
1147
 
 
1148
                                return(PARS_ID_TOKEN);
 
1149
                        }
 
1150
}
 
1151
        YY_BREAK
 
1152
case 11:
 
1153
YY_RULE_SETUP
 
1154
#line 199 "pars0lex.l"
 
1155
{
 
1156
                        yylval = sym_tab_add_null_lit(pars_sym_tab_global);
 
1157
 
 
1158
                        return(PARS_NULL_LIT);
 
1159
}
 
1160
        YY_BREAK
 
1161
case 12:
 
1162
YY_RULE_SETUP
 
1163
#line 205 "pars0lex.l"
 
1164
{
 
1165
                        /* Implicit cursor name */
 
1166
                        yylval = sym_tab_add_str_lit(pars_sym_tab_global,
 
1167
                                                        (byte*) yytext, yyleng);
 
1168
                        return(PARS_SQL_TOKEN);
 
1169
}
 
1170
        YY_BREAK
 
1171
case 13:
 
1172
YY_RULE_SETUP
 
1173
#line 212 "pars0lex.l"
 
1174
{
 
1175
                        return(PARS_AND_TOKEN);
 
1176
}
 
1177
        YY_BREAK
 
1178
case 14:
 
1179
YY_RULE_SETUP
 
1180
#line 216 "pars0lex.l"
 
1181
{
 
1182
                        return(PARS_OR_TOKEN);
 
1183
}
 
1184
        YY_BREAK
 
1185
case 15:
 
1186
YY_RULE_SETUP
 
1187
#line 220 "pars0lex.l"
 
1188
{
 
1189
                        return(PARS_NOT_TOKEN);
 
1190
}
 
1191
        YY_BREAK
 
1192
case 16:
 
1193
YY_RULE_SETUP
 
1194
#line 224 "pars0lex.l"
 
1195
{
 
1196
                        return(PARS_PROCEDURE_TOKEN);
 
1197
}
 
1198
        YY_BREAK
 
1199
case 17:
 
1200
YY_RULE_SETUP
 
1201
#line 228 "pars0lex.l"
 
1202
{
 
1203
                        return(PARS_IN_TOKEN);
 
1204
}
 
1205
        YY_BREAK
 
1206
case 18:
 
1207
YY_RULE_SETUP
 
1208
#line 232 "pars0lex.l"
 
1209
{
 
1210
                        return(PARS_OUT_TOKEN);
 
1211
}
 
1212
        YY_BREAK
 
1213
case 19:
 
1214
YY_RULE_SETUP
 
1215
#line 236 "pars0lex.l"
 
1216
{
 
1217
                        return(PARS_BINARY_TOKEN);
 
1218
}
 
1219
        YY_BREAK
 
1220
case 20:
 
1221
YY_RULE_SETUP
 
1222
#line 240 "pars0lex.l"
 
1223
{
 
1224
                        return(PARS_BLOB_TOKEN);
 
1225
}
 
1226
        YY_BREAK
 
1227
case 21:
 
1228
YY_RULE_SETUP
 
1229
#line 244 "pars0lex.l"
 
1230
{
 
1231
                        return(PARS_INT_TOKEN);
 
1232
}
 
1233
        YY_BREAK
 
1234
case 22:
 
1235
YY_RULE_SETUP
 
1236
#line 248 "pars0lex.l"
 
1237
{
 
1238
                        return(PARS_INT_TOKEN);
 
1239
}
 
1240
        YY_BREAK
 
1241
case 23:
 
1242
YY_RULE_SETUP
 
1243
#line 252 "pars0lex.l"
 
1244
{
 
1245
                        return(PARS_FLOAT_TOKEN);
 
1246
}
 
1247
        YY_BREAK
 
1248
case 24:
 
1249
YY_RULE_SETUP
 
1250
#line 256 "pars0lex.l"
 
1251
{
 
1252
                        return(PARS_CHAR_TOKEN);
 
1253
}
 
1254
        YY_BREAK
 
1255
case 25:
 
1256
YY_RULE_SETUP
 
1257
#line 260 "pars0lex.l"
 
1258
{
 
1259
                        return(PARS_IS_TOKEN);
 
1260
}
 
1261
        YY_BREAK
 
1262
case 26:
 
1263
YY_RULE_SETUP
 
1264
#line 264 "pars0lex.l"
 
1265
{
 
1266
                        return(PARS_BEGIN_TOKEN);
 
1267
}
 
1268
        YY_BREAK
 
1269
case 27:
 
1270
YY_RULE_SETUP
 
1271
#line 268 "pars0lex.l"
 
1272
{
 
1273
                        return(PARS_END_TOKEN);
 
1274
}
 
1275
        YY_BREAK
 
1276
case 28:
 
1277
YY_RULE_SETUP
 
1278
#line 272 "pars0lex.l"
 
1279
{
 
1280
                        return(PARS_IF_TOKEN);
 
1281
}
 
1282
        YY_BREAK
 
1283
case 29:
 
1284
YY_RULE_SETUP
 
1285
#line 276 "pars0lex.l"
 
1286
{
 
1287
                        return(PARS_THEN_TOKEN);
 
1288
}
 
1289
        YY_BREAK
 
1290
case 30:
 
1291
YY_RULE_SETUP
 
1292
#line 280 "pars0lex.l"
 
1293
{
 
1294
                        return(PARS_ELSE_TOKEN);
 
1295
}
 
1296
        YY_BREAK
 
1297
case 31:
 
1298
YY_RULE_SETUP
 
1299
#line 284 "pars0lex.l"
 
1300
{
 
1301
                        return(PARS_ELSIF_TOKEN);
 
1302
}
 
1303
        YY_BREAK
 
1304
case 32:
 
1305
YY_RULE_SETUP
 
1306
#line 288 "pars0lex.l"
 
1307
{
 
1308
                        return(PARS_LOOP_TOKEN);
 
1309
}
 
1310
        YY_BREAK
 
1311
case 33:
 
1312
YY_RULE_SETUP
 
1313
#line 292 "pars0lex.l"
 
1314
{
 
1315
                        return(PARS_WHILE_TOKEN);
 
1316
}
 
1317
        YY_BREAK
 
1318
case 34:
 
1319
YY_RULE_SETUP
 
1320
#line 296 "pars0lex.l"
 
1321
{
 
1322
                        return(PARS_RETURN_TOKEN);
 
1323
}
 
1324
        YY_BREAK
 
1325
case 35:
 
1326
YY_RULE_SETUP
 
1327
#line 300 "pars0lex.l"
 
1328
{
 
1329
                        return(PARS_SELECT_TOKEN);
 
1330
}
 
1331
        YY_BREAK
 
1332
case 36:
 
1333
YY_RULE_SETUP
 
1334
#line 304 "pars0lex.l"
 
1335
{
 
1336
                        return(PARS_SUM_TOKEN);
 
1337
}
 
1338
        YY_BREAK
 
1339
case 37:
 
1340
YY_RULE_SETUP
 
1341
#line 308 "pars0lex.l"
 
1342
{
 
1343
                        return(PARS_COUNT_TOKEN);
 
1344
}
 
1345
        YY_BREAK
 
1346
case 38:
 
1347
YY_RULE_SETUP
 
1348
#line 312 "pars0lex.l"
 
1349
{
 
1350
                        return(PARS_DISTINCT_TOKEN);
 
1351
}
 
1352
        YY_BREAK
 
1353
case 39:
 
1354
YY_RULE_SETUP
 
1355
#line 316 "pars0lex.l"
 
1356
{
 
1357
                        return(PARS_FROM_TOKEN);
 
1358
}
 
1359
        YY_BREAK
 
1360
case 40:
 
1361
YY_RULE_SETUP
 
1362
#line 320 "pars0lex.l"
 
1363
{
 
1364
                        return(PARS_WHERE_TOKEN);
 
1365
}
 
1366
        YY_BREAK
 
1367
case 41:
 
1368
YY_RULE_SETUP
 
1369
#line 324 "pars0lex.l"
 
1370
{
 
1371
                        return(PARS_FOR_TOKEN);
 
1372
}
 
1373
        YY_BREAK
 
1374
case 42:
 
1375
YY_RULE_SETUP
 
1376
#line 328 "pars0lex.l"
 
1377
{
 
1378
                        return(PARS_READ_TOKEN);
 
1379
}
 
1380
        YY_BREAK
 
1381
case 43:
 
1382
YY_RULE_SETUP
 
1383
#line 332 "pars0lex.l"
 
1384
{
 
1385
                        return(PARS_ORDER_TOKEN);
 
1386
}
 
1387
        YY_BREAK
 
1388
case 44:
 
1389
YY_RULE_SETUP
 
1390
#line 336 "pars0lex.l"
 
1391
{
 
1392
                        return(PARS_BY_TOKEN);
 
1393
}
 
1394
        YY_BREAK
 
1395
case 45:
 
1396
YY_RULE_SETUP
 
1397
#line 340 "pars0lex.l"
 
1398
{
 
1399
                        return(PARS_ASC_TOKEN);
 
1400
}
 
1401
        YY_BREAK
 
1402
case 46:
 
1403
YY_RULE_SETUP
 
1404
#line 344 "pars0lex.l"
 
1405
{
 
1406
                        return(PARS_DESC_TOKEN);
 
1407
}
 
1408
        YY_BREAK
 
1409
case 47:
 
1410
YY_RULE_SETUP
 
1411
#line 348 "pars0lex.l"
 
1412
{
 
1413
                        return(PARS_INSERT_TOKEN);
 
1414
}
 
1415
        YY_BREAK
 
1416
case 48:
 
1417
YY_RULE_SETUP
 
1418
#line 352 "pars0lex.l"
 
1419
{
 
1420
                        return(PARS_INTO_TOKEN);
 
1421
}
 
1422
        YY_BREAK
 
1423
case 49:
 
1424
YY_RULE_SETUP
 
1425
#line 356 "pars0lex.l"
 
1426
{
 
1427
                        return(PARS_VALUES_TOKEN);
 
1428
}
 
1429
        YY_BREAK
 
1430
case 50:
 
1431
YY_RULE_SETUP
 
1432
#line 360 "pars0lex.l"
 
1433
{
 
1434
                        return(PARS_UPDATE_TOKEN);
 
1435
}
 
1436
        YY_BREAK
 
1437
case 51:
 
1438
YY_RULE_SETUP
 
1439
#line 364 "pars0lex.l"
 
1440
{
 
1441
                        return(PARS_SET_TOKEN);
 
1442
}
 
1443
        YY_BREAK
 
1444
case 52:
 
1445
YY_RULE_SETUP
 
1446
#line 368 "pars0lex.l"
 
1447
{
 
1448
                        return(PARS_DELETE_TOKEN);
 
1449
}
 
1450
        YY_BREAK
 
1451
case 53:
 
1452
YY_RULE_SETUP
 
1453
#line 372 "pars0lex.l"
 
1454
{
 
1455
                        return(PARS_CURRENT_TOKEN);
 
1456
}
 
1457
        YY_BREAK
 
1458
case 54:
 
1459
YY_RULE_SETUP
 
1460
#line 376 "pars0lex.l"
 
1461
{
 
1462
                        return(PARS_OF_TOKEN);
 
1463
}
 
1464
        YY_BREAK
 
1465
case 55:
 
1466
YY_RULE_SETUP
 
1467
#line 380 "pars0lex.l"
 
1468
{
 
1469
                        return(PARS_CREATE_TOKEN);
 
1470
}
 
1471
        YY_BREAK
 
1472
case 56:
 
1473
YY_RULE_SETUP
 
1474
#line 384 "pars0lex.l"
 
1475
{
 
1476
                        return(PARS_TABLE_TOKEN);
 
1477
}
 
1478
        YY_BREAK
 
1479
case 57:
 
1480
YY_RULE_SETUP
 
1481
#line 388 "pars0lex.l"
 
1482
{
 
1483
                        return(PARS_INDEX_TOKEN);
 
1484
}
 
1485
        YY_BREAK
 
1486
case 58:
 
1487
YY_RULE_SETUP
 
1488
#line 392 "pars0lex.l"
 
1489
{
 
1490
                        return(PARS_UNIQUE_TOKEN);
 
1491
}
 
1492
        YY_BREAK
 
1493
case 59:
 
1494
YY_RULE_SETUP
 
1495
#line 396 "pars0lex.l"
 
1496
{
 
1497
                        return(PARS_CLUSTERED_TOKEN);
 
1498
}
 
1499
        YY_BREAK
 
1500
case 60:
 
1501
YY_RULE_SETUP
 
1502
#line 400 "pars0lex.l"
 
1503
{
 
1504
                        return(PARS_DOES_NOT_FIT_IN_MEM_TOKEN);
 
1505
}
 
1506
        YY_BREAK
 
1507
case 61:
 
1508
YY_RULE_SETUP
 
1509
#line 404 "pars0lex.l"
 
1510
{
 
1511
                        return(PARS_ON_TOKEN);
 
1512
}
 
1513
        YY_BREAK
 
1514
case 62:
 
1515
YY_RULE_SETUP
 
1516
#line 408 "pars0lex.l"
 
1517
{
 
1518
                        return(PARS_DECLARE_TOKEN);
 
1519
}
 
1520
        YY_BREAK
 
1521
case 63:
 
1522
YY_RULE_SETUP
 
1523
#line 412 "pars0lex.l"
 
1524
{
 
1525
                        return(PARS_CURSOR_TOKEN);
 
1526
}
 
1527
        YY_BREAK
 
1528
case 64:
 
1529
YY_RULE_SETUP
 
1530
#line 416 "pars0lex.l"
 
1531
{
 
1532
                        return(PARS_OPEN_TOKEN);
 
1533
}
 
1534
        YY_BREAK
 
1535
case 65:
 
1536
YY_RULE_SETUP
 
1537
#line 420 "pars0lex.l"
 
1538
{
 
1539
                        return(PARS_FETCH_TOKEN);
 
1540
}
 
1541
        YY_BREAK
 
1542
case 66:
 
1543
YY_RULE_SETUP
 
1544
#line 424 "pars0lex.l"
 
1545
{
 
1546
                        return(PARS_CLOSE_TOKEN);
 
1547
}
 
1548
        YY_BREAK
 
1549
case 67:
 
1550
YY_RULE_SETUP
 
1551
#line 428 "pars0lex.l"
 
1552
{
 
1553
                        return(PARS_NOTFOUND_TOKEN);
 
1554
}
 
1555
        YY_BREAK
 
1556
case 68:
 
1557
YY_RULE_SETUP
 
1558
#line 432 "pars0lex.l"
 
1559
{
 
1560
                        return(PARS_TO_CHAR_TOKEN);
 
1561
}
 
1562
        YY_BREAK
 
1563
case 69:
 
1564
YY_RULE_SETUP
 
1565
#line 436 "pars0lex.l"
 
1566
{
 
1567
                        return(PARS_TO_NUMBER_TOKEN);
 
1568
}
 
1569
        YY_BREAK
 
1570
case 70:
 
1571
YY_RULE_SETUP
 
1572
#line 440 "pars0lex.l"
 
1573
{
 
1574
                        return(PARS_TO_BINARY_TOKEN);
 
1575
}
 
1576
        YY_BREAK
 
1577
case 71:
 
1578
YY_RULE_SETUP
 
1579
#line 444 "pars0lex.l"
 
1580
{
 
1581
                        return(PARS_BINARY_TO_NUMBER_TOKEN);
 
1582
}
 
1583
        YY_BREAK
 
1584
case 72:
 
1585
YY_RULE_SETUP
 
1586
#line 448 "pars0lex.l"
 
1587
{
 
1588
                        return(PARS_SUBSTR_TOKEN);
 
1589
}
 
1590
        YY_BREAK
 
1591
case 73:
 
1592
YY_RULE_SETUP
 
1593
#line 452 "pars0lex.l"
 
1594
{
 
1595
                        return(PARS_REPLSTR_TOKEN);
 
1596
}
 
1597
        YY_BREAK
 
1598
case 74:
 
1599
YY_RULE_SETUP
 
1600
#line 456 "pars0lex.l"
 
1601
{
 
1602
                        return(PARS_CONCAT_TOKEN);
 
1603
}
 
1604
        YY_BREAK
 
1605
case 75:
 
1606
YY_RULE_SETUP
 
1607
#line 460 "pars0lex.l"
 
1608
{
 
1609
                        return(PARS_INSTR_TOKEN);
 
1610
}
 
1611
        YY_BREAK
 
1612
case 76:
 
1613
YY_RULE_SETUP
 
1614
#line 464 "pars0lex.l"
 
1615
{
 
1616
                        return(PARS_LENGTH_TOKEN);
 
1617
}
 
1618
        YY_BREAK
 
1619
case 77:
 
1620
YY_RULE_SETUP
 
1621
#line 468 "pars0lex.l"
 
1622
{
 
1623
                        return(PARS_SYSDATE_TOKEN);
 
1624
}
 
1625
        YY_BREAK
 
1626
case 78:
 
1627
YY_RULE_SETUP
 
1628
#line 472 "pars0lex.l"
 
1629
{
 
1630
                        return(PARS_PRINTF_TOKEN);
 
1631
}
 
1632
        YY_BREAK
 
1633
case 79:
 
1634
YY_RULE_SETUP
 
1635
#line 476 "pars0lex.l"
 
1636
{
 
1637
                        return(PARS_ASSERT_TOKEN);
 
1638
}
 
1639
        YY_BREAK
 
1640
case 80:
 
1641
YY_RULE_SETUP
 
1642
#line 480 "pars0lex.l"
 
1643
{
 
1644
                        return(PARS_RND_TOKEN);
 
1645
}
 
1646
        YY_BREAK
 
1647
case 81:
 
1648
YY_RULE_SETUP
 
1649
#line 484 "pars0lex.l"
 
1650
{
 
1651
                        return(PARS_RND_STR_TOKEN);
 
1652
}
 
1653
        YY_BREAK
 
1654
case 82:
 
1655
YY_RULE_SETUP
 
1656
#line 488 "pars0lex.l"
 
1657
{
 
1658
                        return(PARS_ROW_PRINTF_TOKEN);
 
1659
}
 
1660
        YY_BREAK
 
1661
case 83:
 
1662
YY_RULE_SETUP
 
1663
#line 492 "pars0lex.l"
 
1664
{
 
1665
                        return(PARS_COMMIT_TOKEN);
 
1666
}
 
1667
        YY_BREAK
 
1668
case 84:
 
1669
YY_RULE_SETUP
 
1670
#line 496 "pars0lex.l"
 
1671
{
 
1672
                        return(PARS_ROLLBACK_TOKEN);
 
1673
}
 
1674
        YY_BREAK
 
1675
case 85:
 
1676
YY_RULE_SETUP
 
1677
#line 500 "pars0lex.l"
 
1678
{
 
1679
                        return(PARS_WORK_TOKEN);
 
1680
}
 
1681
        YY_BREAK
 
1682
case 86:
 
1683
YY_RULE_SETUP
 
1684
#line 504 "pars0lex.l"
 
1685
{
 
1686
                        return(PARS_UNSIGNED_TOKEN);
 
1687
}
 
1688
        YY_BREAK
 
1689
case 87:
 
1690
YY_RULE_SETUP
 
1691
#line 508 "pars0lex.l"
 
1692
{
 
1693
                        return(PARS_EXIT_TOKEN);
 
1694
}
 
1695
        YY_BREAK
 
1696
case 88:
 
1697
YY_RULE_SETUP
 
1698
#line 512 "pars0lex.l"
 
1699
{
 
1700
                        return(PARS_FUNCTION_TOKEN);
 
1701
}
 
1702
        YY_BREAK
 
1703
case 89:
 
1704
YY_RULE_SETUP
 
1705
#line 516 "pars0lex.l"
 
1706
{
 
1707
                        return(PARS_LOCK_TOKEN);
 
1708
}
 
1709
        YY_BREAK
 
1710
case 90:
 
1711
YY_RULE_SETUP
 
1712
#line 520 "pars0lex.l"
 
1713
{
 
1714
                        return(PARS_SHARE_TOKEN);
 
1715
}
 
1716
        YY_BREAK
 
1717
case 91:
 
1718
YY_RULE_SETUP
 
1719
#line 524 "pars0lex.l"
 
1720
{
 
1721
                        return(PARS_MODE_TOKEN);
 
1722
}
 
1723
        YY_BREAK
 
1724
case 92:
 
1725
YY_RULE_SETUP
 
1726
#line 528 "pars0lex.l"
 
1727
{
 
1728
                        yylval = sym_tab_add_id(pars_sym_tab_global,
 
1729
                                                        (byte*)yytext,
 
1730
                                                        ut_strlen(yytext));
 
1731
                        return(PARS_ID_TOKEN);
 
1732
}
 
1733
        YY_BREAK
 
1734
case 93:
 
1735
YY_RULE_SETUP
 
1736
#line 535 "pars0lex.l"
 
1737
{
 
1738
                        return(PARS_DDOT_TOKEN);
 
1739
}
 
1740
        YY_BREAK
 
1741
case 94:
 
1742
YY_RULE_SETUP
 
1743
#line 539 "pars0lex.l"
 
1744
{
 
1745
                        return(PARS_ASSIGN_TOKEN);
 
1746
}
 
1747
        YY_BREAK
 
1748
case 95:
 
1749
YY_RULE_SETUP
 
1750
#line 543 "pars0lex.l"
 
1751
{
 
1752
                        return(PARS_LE_TOKEN);
 
1753
}
 
1754
        YY_BREAK
 
1755
case 96:
 
1756
YY_RULE_SETUP
 
1757
#line 547 "pars0lex.l"
 
1758
{
 
1759
                        return(PARS_GE_TOKEN);
 
1760
}
 
1761
        YY_BREAK
 
1762
case 97:
 
1763
YY_RULE_SETUP
 
1764
#line 551 "pars0lex.l"
 
1765
{
 
1766
                        return(PARS_NE_TOKEN);
 
1767
}
 
1768
        YY_BREAK
 
1769
case 98:
 
1770
YY_RULE_SETUP
 
1771
#line 555 "pars0lex.l"
 
1772
{
 
1773
 
 
1774
                        return((int)(*yytext));
 
1775
}
 
1776
        YY_BREAK
 
1777
case 99:
 
1778
YY_RULE_SETUP
 
1779
#line 560 "pars0lex.l"
 
1780
{
 
1781
 
 
1782
                        return((int)(*yytext));
 
1783
}
 
1784
        YY_BREAK
 
1785
case 100:
 
1786
YY_RULE_SETUP
 
1787
#line 565 "pars0lex.l"
 
1788
{
 
1789
 
 
1790
                        return((int)(*yytext));
 
1791
}
 
1792
        YY_BREAK
 
1793
case 101:
 
1794
YY_RULE_SETUP
 
1795
#line 570 "pars0lex.l"
 
1796
{
 
1797
 
 
1798
                        return((int)(*yytext));
 
1799
}
 
1800
        YY_BREAK
 
1801
case 102:
 
1802
YY_RULE_SETUP
 
1803
#line 575 "pars0lex.l"
 
1804
{
 
1805
 
 
1806
                        return((int)(*yytext));
 
1807
}
 
1808
        YY_BREAK
 
1809
case 103:
 
1810
YY_RULE_SETUP
 
1811
#line 580 "pars0lex.l"
 
1812
{
 
1813
 
 
1814
                        return((int)(*yytext));
 
1815
}
 
1816
        YY_BREAK
 
1817
case 104:
 
1818
YY_RULE_SETUP
 
1819
#line 585 "pars0lex.l"
 
1820
{
 
1821
 
 
1822
                        return((int)(*yytext));
 
1823
}
 
1824
        YY_BREAK
 
1825
case 105:
 
1826
YY_RULE_SETUP
 
1827
#line 590 "pars0lex.l"
 
1828
{
 
1829
 
 
1830
                        return((int)(*yytext));
 
1831
}
 
1832
        YY_BREAK
 
1833
case 106:
 
1834
YY_RULE_SETUP
 
1835
#line 595 "pars0lex.l"
 
1836
{
 
1837
 
 
1838
                        return((int)(*yytext));
 
1839
}
 
1840
        YY_BREAK
 
1841
case 107:
 
1842
YY_RULE_SETUP
 
1843
#line 600 "pars0lex.l"
 
1844
{
 
1845
 
 
1846
                        return((int)(*yytext));
 
1847
}
 
1848
        YY_BREAK
 
1849
case 108:
 
1850
YY_RULE_SETUP
 
1851
#line 605 "pars0lex.l"
 
1852
{
 
1853
 
 
1854
                        return((int)(*yytext));
 
1855
}
 
1856
        YY_BREAK
 
1857
case 109:
 
1858
YY_RULE_SETUP
 
1859
#line 610 "pars0lex.l"
 
1860
{
 
1861
 
 
1862
                        return((int)(*yytext));
 
1863
}
 
1864
        YY_BREAK
 
1865
case 110:
 
1866
YY_RULE_SETUP
 
1867
#line 615 "pars0lex.l"
 
1868
{
 
1869
 
 
1870
                        return((int)(*yytext));
 
1871
}
 
1872
        YY_BREAK
 
1873
case 111:
 
1874
YY_RULE_SETUP
 
1875
#line 620 "pars0lex.l"
 
1876
{
 
1877
 
 
1878
                        return((int)(*yytext));
 
1879
}
 
1880
        YY_BREAK
 
1881
case 112:
 
1882
YY_RULE_SETUP
 
1883
#line 625 "pars0lex.l"
 
1884
{
 
1885
 
 
1886
                        return((int)(*yytext));
 
1887
}
 
1888
        YY_BREAK
 
1889
case 113:
 
1890
YY_RULE_SETUP
 
1891
#line 630 "pars0lex.l"
 
1892
BEGIN(comment); /* eat up comment */
 
1893
        YY_BREAK
 
1894
case 114:
 
1895
/* rule 114 can match eol */
 
1896
YY_RULE_SETUP
 
1897
#line 632 "pars0lex.l"
 
1898
 
 
1899
        YY_BREAK
 
1900
case 115:
 
1901
/* rule 115 can match eol */
 
1902
YY_RULE_SETUP
 
1903
#line 633 "pars0lex.l"
 
1904
 
 
1905
        YY_BREAK
 
1906
case 116:
 
1907
YY_RULE_SETUP
 
1908
#line 634 "pars0lex.l"
 
1909
BEGIN(INITIAL);
 
1910
        YY_BREAK
 
1911
case 117:
 
1912
/* rule 117 can match eol */
 
1913
YY_RULE_SETUP
 
1914
#line 636 "pars0lex.l"
 
1915
/* eat up whitespace */
 
1916
        YY_BREAK
 
1917
case 118:
 
1918
YY_RULE_SETUP
 
1919
#line 639 "pars0lex.l"
 
1920
{
 
1921
                        fprintf(stderr,"Unrecognized character: %02x\n",
 
1922
                                *yytext);
 
1923
 
 
1924
                        ut_error;
 
1925
 
 
1926
                        return(0);
 
1927
}
 
1928
        YY_BREAK
 
1929
case 119:
 
1930
YY_RULE_SETUP
 
1931
#line 648 "pars0lex.l"
 
1932
YY_FATAL_ERROR( "flex scanner jammed" );
 
1933
        YY_BREAK
 
1934
#line 1916 "lexyy.c"
 
1935
case YY_STATE_EOF(INITIAL):
 
1936
case YY_STATE_EOF(comment):
 
1937
case YY_STATE_EOF(quoted):
 
1938
case YY_STATE_EOF(id):
 
1939
        yyterminate();
 
1940
 
 
1941
        case YY_END_OF_BUFFER:
 
1942
                {
 
1943
                /* Amount of text matched not including the EOB char. */
 
1944
                int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
 
1945
 
 
1946
                /* Undo the effects of YY_DO_BEFORE_ACTION. */
 
1947
                *yy_cp = (yy_hold_char);
 
1948
                YY_RESTORE_YY_MORE_OFFSET
 
1949
 
 
1950
                if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
 
1951
                        {
 
1952
                        /* We're scanning a new file or input source.  It's
 
1953
                         * possible that this happened because the user
 
1954
                         * just pointed yyin at a new source and called
 
1955
                         * yylex().  If so, then we have to assure
 
1956
                         * consistency between YY_CURRENT_BUFFER and our
 
1957
                         * globals.  Here is the right place to do so, because
 
1958
                         * this is the first action (other than possibly a
 
1959
                         * back-up) that will match for the new input source.
 
1960
                         */
 
1961
                        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
 
1962
                        YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
 
1963
                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
 
1964
                        }
 
1965
 
 
1966
                /* Note that here we test for yy_c_buf_p "<=" to the position
 
1967
                 * of the first EOB in the buffer, since yy_c_buf_p will
 
1968
                 * already have been incremented past the NUL character
 
1969
                 * (since all states make transitions on EOB to the
 
1970
                 * end-of-buffer state).  Contrast this with the test
 
1971
                 * in input().
 
1972
                 */
 
1973
                if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
 
1974
                        { /* This was really a NUL. */
 
1975
                        yy_state_type yy_next_state;
 
1976
 
 
1977
                        (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
 
1978
 
 
1979
                        yy_current_state = yy_get_previous_state(  );
 
1980
 
 
1981
                        /* Okay, we're now positioned to make the NUL
 
1982
                         * transition.  We couldn't have
 
1983
                         * yy_get_previous_state() go ahead and do it
 
1984
                         * for us because it doesn't know how to deal
 
1985
                         * with the possibility of jamming (and we don't
 
1986
                         * want to build jamming into it because then it
 
1987
                         * will run more slowly).
 
1988
                         */
 
1989
 
 
1990
                        yy_next_state = yy_try_NUL_trans( yy_current_state );
 
1991
 
 
1992
                        yy_bp = (yytext_ptr) + YY_MORE_ADJ;
 
1993
 
 
1994
                        if ( yy_next_state )
 
1995
                                {
 
1996
                                /* Consume the NUL. */
 
1997
                                yy_cp = ++(yy_c_buf_p);
 
1998
                                yy_current_state = yy_next_state;
 
1999
                                goto yy_match;
 
2000
                                }
 
2001
 
 
2002
                        else
 
2003
                                {
 
2004
                                yy_cp = (yy_last_accepting_cpos);
 
2005
                                yy_current_state = (yy_last_accepting_state);
 
2006
                                goto yy_find_action;
 
2007
                                }
 
2008
                        }
 
2009
 
 
2010
                else switch ( yy_get_next_buffer(  ) )
 
2011
                        {
 
2012
                        case EOB_ACT_END_OF_FILE:
 
2013
                                {
 
2014
                                (yy_did_buffer_switch_on_eof) = 0;
 
2015
 
 
2016
                                if ( yywrap( ) )
 
2017
                                        {
 
2018
                                        /* Note: because we've taken care in
 
2019
                                         * yy_get_next_buffer() to have set up
 
2020
                                         * yytext, we can now set up
 
2021
                                         * yy_c_buf_p so that if some total
 
2022
                                         * hoser (like flex itself) wants to
 
2023
                                         * call the scanner after we return the
 
2024
                                         * YY_NULL, it'll still work - another
 
2025
                                         * YY_NULL will get returned.
 
2026
                                         */
 
2027
                                        (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
 
2028
 
 
2029
                                        yy_act = YY_STATE_EOF(YY_START);
 
2030
                                        goto do_action;
 
2031
                                        }
 
2032
 
 
2033
                                else
 
2034
                                        {
 
2035
                                        if ( ! (yy_did_buffer_switch_on_eof) )
 
2036
                                                YY_NEW_FILE;
 
2037
                                        }
 
2038
                                break;
 
2039
                                }
 
2040
 
 
2041
                        case EOB_ACT_CONTINUE_SCAN:
 
2042
                                (yy_c_buf_p) =
 
2043
                                        (yytext_ptr) + yy_amount_of_matched_text;
 
2044
 
 
2045
                                yy_current_state = yy_get_previous_state(  );
 
2046
 
 
2047
                                yy_cp = (yy_c_buf_p);
 
2048
                                yy_bp = (yytext_ptr) + YY_MORE_ADJ;
 
2049
                                goto yy_match;
 
2050
 
 
2051
                        case EOB_ACT_LAST_MATCH:
 
2052
                                (yy_c_buf_p) =
 
2053
                                &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
 
2054
 
 
2055
                                yy_current_state = yy_get_previous_state(  );
 
2056
 
 
2057
                                yy_cp = (yy_c_buf_p);
 
2058
                                yy_bp = (yytext_ptr) + YY_MORE_ADJ;
 
2059
                                goto yy_find_action;
 
2060
                        }
 
2061
                break;
 
2062
                }
 
2063
 
 
2064
        default:
 
2065
                YY_FATAL_ERROR(
 
2066
                        "fatal flex scanner internal error--no action found" );
 
2067
        } /* end of action switch */
 
2068
                } /* end of scanning one token */
 
2069
} /* end of yylex */
 
2070
 
 
2071
/* yy_get_next_buffer - try to read in a new buffer
 
2072
 *
 
2073
 * Returns a code representing an action:
 
2074
 *      EOB_ACT_LAST_MATCH -
 
2075
 *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
 
2076
 *      EOB_ACT_END_OF_FILE - end of file
 
2077
 */
 
2078
static int yy_get_next_buffer (void)
 
2079
{
 
2080
        register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
 
2081
        register char *source = (yytext_ptr);
 
2082
        register int number_to_move, i;
 
2083
        int ret_val;
 
2084
 
 
2085
        if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
 
2086
                YY_FATAL_ERROR(
 
2087
                "fatal flex scanner internal error--end of buffer missed" );
 
2088
 
 
2089
        if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
 
2090
                { /* Don't try to fill the buffer, so this is an EOF. */
 
2091
                if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
 
2092
                        {
 
2093
                        /* We matched a single character, the EOB, so
 
2094
                         * treat this as a final EOF.
 
2095
                         */
 
2096
                        return EOB_ACT_END_OF_FILE;
 
2097
                        }
 
2098
 
 
2099
                else
 
2100
                        {
 
2101
                        /* We matched some text prior to the EOB, first
 
2102
                         * process it.
 
2103
                         */
 
2104
                        return EOB_ACT_LAST_MATCH;
 
2105
                        }
 
2106
                }
 
2107
 
 
2108
        /* Try to read more data. */
 
2109
 
 
2110
        /* First move last chars to start of buffer. */
 
2111
        number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
 
2112
 
 
2113
        for ( i = 0; i < number_to_move; ++i )
 
2114
                *(dest++) = *(source++);
 
2115
 
 
2116
        if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
 
2117
                /* don't do the read, it's not guaranteed to return an EOF,
 
2118
                 * just force an EOF
 
2119
                 */
 
2120
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
 
2121
 
 
2122
        else
 
2123
                {
 
2124
                        size_t num_to_read =
 
2125
                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
2126
 
 
2127
                while ( num_to_read <= 0 )
 
2128
                        { /* Not enough room in the buffer - grow it. */
 
2129
 
 
2130
                        /* just a shorter name for the current buffer */
 
2131
                        YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
 
2132
 
 
2133
                        int yy_c_buf_p_offset =
 
2134
                                (int) ((yy_c_buf_p) - b->yy_ch_buf);
 
2135
 
 
2136
                        if ( b->yy_is_our_buffer )
 
2137
                                {
 
2138
                                int new_size = b->yy_buf_size * 2;
 
2139
 
 
2140
                                if ( new_size <= 0 )
 
2141
                                        b->yy_buf_size += b->yy_buf_size / 8;
 
2142
                                else
 
2143
                                        b->yy_buf_size *= 2;
 
2144
 
 
2145
                                b->yy_ch_buf = (char *)
 
2146
                                        /* Include room in for 2 EOB chars. */
 
2147
                                        yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
 
2148
                                }
 
2149
                        else
 
2150
                                /* Can't grow it, we don't own it. */
 
2151
                                b->yy_ch_buf = 0;
 
2152
 
 
2153
                        if ( ! b->yy_ch_buf )
 
2154
                                YY_FATAL_ERROR(
 
2155
                                "fatal error - scanner input buffer overflow" );
 
2156
 
 
2157
                        (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
 
2158
 
 
2159
                        num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
 
2160
                                                number_to_move - 1;
 
2161
 
 
2162
                        }
 
2163
 
 
2164
                if ( num_to_read > YY_READ_BUF_SIZE )
 
2165
                        num_to_read = YY_READ_BUF_SIZE;
 
2166
 
 
2167
                /* Read in more data. */
 
2168
                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
 
2169
                        (yy_n_chars), num_to_read );
 
2170
 
 
2171
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
 
2172
                }
 
2173
 
 
2174
        if ( (yy_n_chars) == 0 )
 
2175
                {
 
2176
                if ( number_to_move == YY_MORE_ADJ )
 
2177
                        {
 
2178
                        ret_val = EOB_ACT_END_OF_FILE;
 
2179
                        yyrestart(yyin  );
 
2180
                        }
 
2181
 
 
2182
                else
 
2183
                        {
 
2184
                        ret_val = EOB_ACT_LAST_MATCH;
 
2185
                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
 
2186
                                YY_BUFFER_EOF_PENDING;
 
2187
                        }
 
2188
                }
 
2189
 
 
2190
        else
 
2191
                ret_val = EOB_ACT_CONTINUE_SCAN;
 
2192
 
 
2193
        (yy_n_chars) += number_to_move;
 
2194
        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
 
2195
        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
 
2196
 
 
2197
        (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
 
2198
 
 
2199
        return ret_val;
 
2200
}
 
2201
 
 
2202
/* yy_get_previous_state - get the state just before the EOB char was reached */
 
2203
 
 
2204
    static yy_state_type yy_get_previous_state (void)
 
2205
{
 
2206
        register yy_state_type yy_current_state;
 
2207
        register char *yy_cp;
 
2208
    
 
2209
        yy_current_state = (yy_start);
 
2210
 
 
2211
        for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
 
2212
                {
 
2213
                register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
 
2214
                if ( yy_accept[yy_current_state] )
 
2215
                        {
 
2216
                        (yy_last_accepting_state) = yy_current_state;
 
2217
                        (yy_last_accepting_cpos) = yy_cp;
 
2218
                        }
 
2219
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 
2220
                        {
 
2221
                        yy_current_state = (int) yy_def[yy_current_state];
 
2222
                        if ( yy_current_state >= 399 )
 
2223
                                yy_c = yy_meta[(unsigned int) yy_c];
 
2224
                        }
 
2225
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 
2226
                }
 
2227
 
 
2228
        return yy_current_state;
 
2229
}
 
2230
 
 
2231
/* yy_try_NUL_trans - try to make a transition on the NUL character
 
2232
 *
 
2233
 * synopsis
 
2234
 *      next_state = yy_try_NUL_trans( current_state );
 
2235
 */
 
2236
    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
 
2237
{
 
2238
        register int yy_is_jam;
 
2239
        register char *yy_cp = (yy_c_buf_p);
 
2240
 
 
2241
        register YY_CHAR yy_c = 1;
 
2242
        if ( yy_accept[yy_current_state] )
 
2243
                {
 
2244
                (yy_last_accepting_state) = yy_current_state;
 
2245
                (yy_last_accepting_cpos) = yy_cp;
 
2246
                }
 
2247
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 
2248
                {
 
2249
                yy_current_state = (int) yy_def[yy_current_state];
 
2250
                if ( yy_current_state >= 399 )
 
2251
                        yy_c = yy_meta[(unsigned int) yy_c];
 
2252
                }
 
2253
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 
2254
        yy_is_jam = (yy_current_state == 398);
 
2255
 
 
2256
        return yy_is_jam ? 0 : yy_current_state;
 
2257
}
 
2258
 
 
2259
#ifndef YY_NO_INPUT
 
2260
#ifdef __cplusplus
 
2261
    static int yyinput (void)
 
2262
#else
 
2263
    static int input  (void)
 
2264
#endif
 
2265
 
 
2266
{
 
2267
        int c;
 
2268
    
 
2269
        *(yy_c_buf_p) = (yy_hold_char);
 
2270
 
 
2271
        if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
 
2272
                {
 
2273
                /* yy_c_buf_p now points to the character we want to return.
 
2274
                 * If this occurs *before* the EOB characters, then it's a
 
2275
                 * valid NUL; if not, then we've hit the end of the buffer.
 
2276
                 */
 
2277
                if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
 
2278
                        /* This was really a NUL. */
 
2279
                        *(yy_c_buf_p) = '\0';
 
2280
 
 
2281
                else
 
2282
                        { /* need more input */
 
2283
                        int offset = (int)((yy_c_buf_p) - (yytext_ptr));
 
2284
                        ++(yy_c_buf_p);
 
2285
 
 
2286
                        switch ( yy_get_next_buffer(  ) )
 
2287
                                {
 
2288
                                case EOB_ACT_LAST_MATCH:
 
2289
                                        /* This happens because yy_g_n_b()
 
2290
                                         * sees that we've accumulated a
 
2291
                                         * token and flags that we need to
 
2292
                                         * try matching the token before
 
2293
                                         * proceeding.  But for input(),
 
2294
                                         * there's no matching to consider.
 
2295
                                         * So convert the EOB_ACT_LAST_MATCH
 
2296
                                         * to EOB_ACT_END_OF_FILE.
 
2297
                                         */
 
2298
 
 
2299
                                        /* Reset buffer status. */
 
2300
                                        yyrestart(yyin );
 
2301
 
 
2302
                                        /*FALLTHROUGH*/
 
2303
 
 
2304
                                case EOB_ACT_END_OF_FILE:
 
2305
                                        {
 
2306
                                        if ( yywrap( ) )
 
2307
                                                return EOF;
 
2308
 
 
2309
                                        if ( ! (yy_did_buffer_switch_on_eof) )
 
2310
                                                YY_NEW_FILE;
 
2311
#ifdef __cplusplus
 
2312
                                        return yyinput();
 
2313
#else
 
2314
                                        return input();
 
2315
#endif
 
2316
                                        }
 
2317
 
 
2318
                                case EOB_ACT_CONTINUE_SCAN:
 
2319
                                        (yy_c_buf_p) = (yytext_ptr) + offset;
 
2320
                                        break;
 
2321
                                }
 
2322
                        }
 
2323
                }
 
2324
 
 
2325
        c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
 
2326
        *(yy_c_buf_p) = '\0';   /* preserve yytext */
 
2327
        (yy_hold_char) = *++(yy_c_buf_p);
 
2328
 
 
2329
        return c;
 
2330
}
 
2331
#endif  /* ifndef YY_NO_INPUT */
 
2332
 
 
2333
/** Immediately switch to a different input stream.
 
2334
 * @param input_file A readable stream.
 
2335
 * 
 
2336
 * @note This function does not reset the start condition to @c INITIAL .
 
2337
 */
 
2338
    static void yyrestart  (FILE * input_file )
 
2339
{
 
2340
    
 
2341
        if ( ! YY_CURRENT_BUFFER ){
 
2342
        yyensure_buffer_stack ();
 
2343
                YY_CURRENT_BUFFER_LVALUE =
 
2344
            yy_create_buffer(yyin,YY_BUF_SIZE );
 
2345
        }
 
2346
 
 
2347
        yy_init_buffer(YY_CURRENT_BUFFER,input_file );
 
2348
        yy_load_buffer_state( );
 
2349
}
 
2350
 
 
2351
/** Switch to a different input buffer.
 
2352
 * @param new_buffer The new input buffer.
 
2353
 * 
 
2354
 */
 
2355
    __attribute__((unused)) static void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
 
2356
{
 
2357
    
 
2358
        /* TODO. We should be able to replace this entire function body
 
2359
         * with
 
2360
         *              yypop_buffer_state();
 
2361
         *              yypush_buffer_state(new_buffer);
 
2362
     */
 
2363
        yyensure_buffer_stack ();
 
2364
        if ( YY_CURRENT_BUFFER == new_buffer )
 
2365
                return;
 
2366
 
 
2367
        if ( YY_CURRENT_BUFFER )
 
2368
                {
 
2369
                /* Flush out information for old buffer. */
 
2370
                *(yy_c_buf_p) = (yy_hold_char);
 
2371
                YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
 
2372
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
 
2373
                }
 
2374
 
 
2375
        YY_CURRENT_BUFFER_LVALUE = new_buffer;
 
2376
        yy_load_buffer_state( );
 
2377
 
 
2378
        /* We don't actually know whether we did this switch during
 
2379
         * EOF (yywrap()) processing, but the only time this flag
 
2380
         * is looked at is after yywrap() is called, so it's safe
 
2381
         * to go ahead and always set it.
 
2382
         */
 
2383
        (yy_did_buffer_switch_on_eof) = 1;
 
2384
}
 
2385
 
 
2386
static void yy_load_buffer_state  (void)
 
2387
{
 
2388
        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
 
2389
        (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
 
2390
        yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
 
2391
        (yy_hold_char) = *(yy_c_buf_p);
 
2392
}
 
2393
 
 
2394
/** Allocate and initialize an input buffer state.
 
2395
 * @param file A readable stream.
 
2396
 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
 
2397
 * 
 
2398
 * @return the allocated buffer state.
 
2399
 */
 
2400
    static YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
 
2401
{
 
2402
        YY_BUFFER_STATE b;
 
2403
    
 
2404
        b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
 
2405
        if ( ! b )
 
2406
                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
2407
 
 
2408
        b->yy_buf_size = size;
 
2409
 
 
2410
        /* yy_ch_buf has to be 2 characters longer than the size given because
 
2411
         * we need to put in 2 end-of-buffer characters.
 
2412
         */
 
2413
        b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
 
2414
        if ( ! b->yy_ch_buf )
 
2415
                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
2416
 
 
2417
        b->yy_is_our_buffer = 1;
 
2418
 
 
2419
        yy_init_buffer(b,file );
 
2420
 
 
2421
        return b;
 
2422
}
 
2423
 
 
2424
/** Destroy the buffer.
 
2425
 * @param b a buffer created with yy_create_buffer()
 
2426
 * 
 
2427
 */
 
2428
    static void yy_delete_buffer (YY_BUFFER_STATE  b )
 
2429
{
 
2430
    
 
2431
        if ( ! b )
 
2432
                return;
 
2433
 
 
2434
        if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
 
2435
                YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
 
2436
 
 
2437
        if ( b->yy_is_our_buffer )
 
2438
                yyfree((void *) b->yy_ch_buf  );
 
2439
 
 
2440
        yyfree((void *) b  );
 
2441
}
 
2442
 
 
2443
/* Initializes or reinitializes a buffer.
 
2444
 * This function is sometimes called more than once on the same buffer,
 
2445
 * such as during a yyrestart() or at EOF.
 
2446
 */
 
2447
    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
 
2448
 
 
2449
{
 
2450
        int oerrno = errno;
 
2451
    
 
2452
        yy_flush_buffer(b );
 
2453
 
 
2454
        b->yy_input_file = file;
 
2455
        b->yy_fill_buffer = 1;
 
2456
 
 
2457
    /* If b is the current buffer, then yy_init_buffer was _probably_
 
2458
     * called from yyrestart() or through yy_get_next_buffer.
 
2459
     * In that case, we don't want to reset the lineno or column.
 
2460
     */
 
2461
    if (b != YY_CURRENT_BUFFER){
 
2462
        b->yy_bs_lineno = 1;
 
2463
        b->yy_bs_column = 0;
 
2464
    }
 
2465
 
 
2466
        b->yy_is_interactive = 0;
 
2467
    
 
2468
        errno = oerrno;
 
2469
}
 
2470
 
 
2471
/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
 
2472
 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
 
2473
 * 
 
2474
 */
 
2475
    static void yy_flush_buffer (YY_BUFFER_STATE  b )
 
2476
{
 
2477
        if ( ! b )
 
2478
                return;
 
2479
 
 
2480
        b->yy_n_chars = 0;
 
2481
 
 
2482
        /* We always need two end-of-buffer characters.  The first causes
 
2483
         * a transition to the end-of-buffer state.  The second causes
 
2484
         * a jam in that state.
 
2485
         */
 
2486
        b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
 
2487
        b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
 
2488
 
 
2489
        b->yy_buf_pos = &b->yy_ch_buf[0];
 
2490
 
 
2491
        b->yy_at_bol = 1;
 
2492
        b->yy_buffer_status = YY_BUFFER_NEW;
 
2493
 
 
2494
        if ( b == YY_CURRENT_BUFFER )
 
2495
                yy_load_buffer_state( );
 
2496
}
 
2497
 
 
2498
/** Pushes the new state onto the stack. The new state becomes
 
2499
 *  the current state. This function will allocate the stack
 
2500
 *  if necessary.
 
2501
 *  @param new_buffer The new state.
 
2502
 *  
 
2503
 */
 
2504
__attribute__((unused)) static void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
 
2505
{
 
2506
        if (new_buffer == NULL)
 
2507
                return;
 
2508
 
 
2509
        yyensure_buffer_stack();
 
2510
 
 
2511
        /* This block is copied from yy_switch_to_buffer. */
 
2512
        if ( YY_CURRENT_BUFFER )
 
2513
                {
 
2514
                /* Flush out information for old buffer. */
 
2515
                *(yy_c_buf_p) = (yy_hold_char);
 
2516
                YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
 
2517
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
 
2518
                }
 
2519
 
 
2520
        /* Only push if top exists. Otherwise, replace top. */
 
2521
        if (YY_CURRENT_BUFFER)
 
2522
                (yy_buffer_stack_top)++;
 
2523
        YY_CURRENT_BUFFER_LVALUE = new_buffer;
 
2524
 
 
2525
        /* copied from yy_switch_to_buffer. */
 
2526
        yy_load_buffer_state( );
 
2527
        (yy_did_buffer_switch_on_eof) = 1;
 
2528
}
 
2529
 
 
2530
/** Removes and deletes the top of the stack, if present.
 
2531
 *  The next element becomes the new top.
 
2532
 *  
 
2533
 */
 
2534
__attribute__((unused)) static void yypop_buffer_state (void)
 
2535
{
 
2536
        if (!YY_CURRENT_BUFFER)
 
2537
                return;
 
2538
 
 
2539
        yy_delete_buffer(YY_CURRENT_BUFFER );
 
2540
        YY_CURRENT_BUFFER_LVALUE = NULL;
 
2541
        if ((yy_buffer_stack_top) > 0)
 
2542
                --(yy_buffer_stack_top);
 
2543
 
 
2544
        if (YY_CURRENT_BUFFER) {
 
2545
                yy_load_buffer_state( );
 
2546
                (yy_did_buffer_switch_on_eof) = 1;
 
2547
        }
 
2548
}
 
2549
 
 
2550
/* Allocates the stack if it does not exist.
 
2551
 *  Guarantees space for at least one push.
 
2552
 */
 
2553
static void yyensure_buffer_stack (void)
 
2554
{
 
2555
        int num_to_alloc;
 
2556
    
 
2557
        if (!(yy_buffer_stack)) {
 
2558
 
 
2559
                /* First allocation is just for 2 elements, since we don't know if this
 
2560
                 * scanner will even need a stack. We use 2 instead of 1 to avoid an
 
2561
                 * immediate realloc on the next call.
 
2562
         */
 
2563
                num_to_alloc = 1;
 
2564
                (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
 
2565
                                                                (num_to_alloc * sizeof(struct yy_buffer_state*)
 
2566
                                                                );
 
2567
                
 
2568
                memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
 
2569
                                
 
2570
                (yy_buffer_stack_max) = num_to_alloc;
 
2571
                (yy_buffer_stack_top) = 0;
 
2572
                return;
 
2573
        }
 
2574
 
 
2575
        if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
 
2576
 
 
2577
                /* Increase the buffer to prepare for a possible push. */
 
2578
                int grow_size = 8 /* arbitrary grow size */;
 
2579
 
 
2580
                num_to_alloc = (yy_buffer_stack_max) + grow_size;
 
2581
                (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
 
2582
                                                                ((yy_buffer_stack),
 
2583
                                                                num_to_alloc * sizeof(struct yy_buffer_state*)
 
2584
                                                                );
 
2585
 
 
2586
                /* zero only the new slots.*/
 
2587
                memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
 
2588
                (yy_buffer_stack_max) = num_to_alloc;
 
2589
        }
 
2590
}
 
2591
 
 
2592
#ifndef YY_EXIT_FAILURE
 
2593
#define YY_EXIT_FAILURE 2
 
2594
#endif
 
2595
 
 
2596
static void yy_fatal_error (yyconst char* msg )
 
2597
{
 
2598
        (void) fprintf( stderr, "%s\n", msg );
 
2599
        exit( YY_EXIT_FAILURE );
 
2600
}
 
2601
 
 
2602
/* Redefine yyless() so it works in section 3 code. */
 
2603
 
 
2604
#undef yyless
 
2605
#define yyless(n) \
 
2606
        do \
 
2607
                { \
 
2608
                /* Undo effects of setting up yytext. */ \
 
2609
        int yyless_macro_arg = (n); \
 
2610
        YY_LESS_LINENO(yyless_macro_arg);\
 
2611
                yytext[yyleng] = (yy_hold_char); \
 
2612
                (yy_c_buf_p) = yytext + yyless_macro_arg; \
 
2613
                (yy_hold_char) = *(yy_c_buf_p); \
 
2614
                *(yy_c_buf_p) = '\0'; \
 
2615
                yyleng = yyless_macro_arg; \
 
2616
                } \
 
2617
        while ( 0 )
 
2618
 
 
2619
/* Accessor  methods (get/set functions) to struct members. */
 
2620
 
 
2621
/** Get the current line number.
 
2622
 * 
 
2623
 */
 
2624
__attribute__((unused)) static int yyget_lineno  (void)
 
2625
{
 
2626
        
 
2627
    return yylineno;
 
2628
}
 
2629
 
 
2630
/** Get the input stream.
 
2631
 * 
 
2632
 */
 
2633
__attribute__((unused)) static FILE *yyget_in  (void)
 
2634
{
 
2635
        return yyin;
 
2636
}
 
2637
 
 
2638
/** Get the output stream.
 
2639
 * 
 
2640
 */
 
2641
__attribute__((unused)) static FILE *yyget_out  (void)
 
2642
{
 
2643
        return yyout;
 
2644
}
 
2645
 
 
2646
/** Get the length of the current token.
 
2647
 * 
 
2648
 */
 
2649
__attribute__((unused)) static int yyget_leng  (void)
 
2650
{
 
2651
        return yyleng;
 
2652
}
 
2653
 
 
2654
/** Get the current token.
 
2655
 * 
 
2656
 */
 
2657
 
 
2658
__attribute__((unused)) static char *yyget_text  (void)
 
2659
{
 
2660
        return yytext;
 
2661
}
 
2662
 
 
2663
/** Set the current line number.
 
2664
 * @param line_number
 
2665
 * 
 
2666
 */
 
2667
__attribute__((unused)) static void yyset_lineno (int  line_number )
 
2668
{
 
2669
    
 
2670
    yylineno = line_number;
 
2671
}
 
2672
 
 
2673
/** Set the input stream. This does not discard the current
 
2674
 * input buffer.
 
2675
 * @param in_str A readable stream.
 
2676
 * 
 
2677
 * @see yy_switch_to_buffer
 
2678
 */
 
2679
__attribute__((unused)) static void yyset_in (FILE *  in_str )
 
2680
{
 
2681
        yyin = in_str ;
 
2682
}
 
2683
 
 
2684
__attribute__((unused)) static void yyset_out (FILE *  out_str )
 
2685
{
 
2686
        yyout = out_str ;
 
2687
}
 
2688
 
 
2689
__attribute__((unused)) static int yyget_debug  (void)
 
2690
{
 
2691
        return yy_flex_debug;
 
2692
}
 
2693
 
 
2694
__attribute__((unused)) static void yyset_debug (int  bdebug )
 
2695
{
 
2696
        yy_flex_debug = bdebug ;
 
2697
}
 
2698
 
 
2699
/* yylex_destroy is for both reentrant and non-reentrant scanners. */
 
2700
__attribute__((unused)) static int yylex_destroy  (void)
 
2701
{
 
2702
    
 
2703
    /* Pop the buffer stack, destroying each element. */
 
2704
        while(YY_CURRENT_BUFFER){
 
2705
                yy_delete_buffer(YY_CURRENT_BUFFER  );
 
2706
                YY_CURRENT_BUFFER_LVALUE = NULL;
 
2707
                yypop_buffer_state();
 
2708
        }
 
2709
 
 
2710
        /* Destroy the stack itself. */
 
2711
        yyfree((yy_buffer_stack) );
 
2712
        (yy_buffer_stack) = NULL;
 
2713
 
 
2714
    return 0;
 
2715
}
 
2716
 
 
2717
/*
 
2718
 * Internal utility routines.
 
2719
 */
 
2720
 
 
2721
#ifndef yytext_ptr
 
2722
static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
 
2723
{
 
2724
        register int i;
 
2725
        for ( i = 0; i < n; ++i )
 
2726
                s1[i] = s2[i];
 
2727
}
 
2728
#endif
 
2729
 
 
2730
#ifdef YY_NEED_STRLEN
 
2731
static int yy_flex_strlen (yyconst char * s )
 
2732
{
 
2733
        register int n;
 
2734
        for ( n = 0; s[n]; ++n )
 
2735
                ;
 
2736
 
 
2737
        return n;
 
2738
}
 
2739
#endif
 
2740
 
 
2741
static void *yyalloc (yy_size_t  size )
 
2742
{
 
2743
        return (void *) malloc( size );
 
2744
}
 
2745
 
 
2746
static void *yyrealloc  (void * ptr, yy_size_t  size )
 
2747
{
 
2748
        /* The cast to (char *) in the following accommodates both
 
2749
         * implementations that use char* generic pointers, and those
 
2750
         * that use void* generic pointers.  It works with the latter
 
2751
         * because both ANSI C and C++ allow castless assignment from
 
2752
         * any pointer type to void*, and deal with argument conversions
 
2753
         * as though doing an assignment.
 
2754
         */
 
2755
        return (void *) realloc( (char *) ptr, size );
 
2756
}
 
2757
 
 
2758
static void yyfree (void * ptr )
 
2759
{
 
2760
        free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
 
2761
}
 
2762
 
 
2763
#define YYTABLES_NAME "yytables"
 
2764
 
 
2765
#undef YY_NEW_FILE
 
2766
#undef YY_FLUSH_BUFFER
 
2767
#undef yy_set_bol
 
2768
#undef yy_new_buffer
 
2769
#undef yy_set_interactive
 
2770
#undef yytext_ptr
 
2771
#undef YY_DO_BEFORE_ACTION
 
2772
 
 
2773
#ifdef YY_DECL_IS_OURS
 
2774
#undef YY_DECL_IS_OURS
 
2775
#undef YY_DECL
 
2776
#endif
 
2777
#line 648 "pars0lex.l"
 
2778
 
 
2779
 
 
2780
 
 
2781
 
 
2782
/**********************************************************************
 
2783
Release any resources used by the lexer. */
 
2784
UNIV_INTERN
 
2785
void
 
2786
pars_lexer_close(void)
 
2787
/*==================*/
 
2788
{
 
2789
        yylex_destroy();
 
2790
        free(stringbuf);
 
2791
        stringbuf = NULL;
 
2792
        stringbuf_len_alloc = stringbuf_len = 0;
 
2793
}