xref: /aosp_15_r20/external/libtracefs/src/sqlhist-lex.c (revision 287e80b3a36113050663245e7f2c00d274188f18)
1*287e80b3SSadaf Ebrahimi #line 1 "sqlhist-lex.c"
2*287e80b3SSadaf Ebrahimi 
3*287e80b3SSadaf Ebrahimi #line 3 "sqlhist-lex.c"
4*287e80b3SSadaf Ebrahimi 
5*287e80b3SSadaf Ebrahimi #define  YY_INT_ALIGNED short int
6*287e80b3SSadaf Ebrahimi 
7*287e80b3SSadaf Ebrahimi /* A lexical scanner generated by flex */
8*287e80b3SSadaf Ebrahimi 
9*287e80b3SSadaf Ebrahimi #define FLEX_SCANNER
10*287e80b3SSadaf Ebrahimi #define YY_FLEX_MAJOR_VERSION 2
11*287e80b3SSadaf Ebrahimi #define YY_FLEX_MINOR_VERSION 6
12*287e80b3SSadaf Ebrahimi #define YY_FLEX_SUBMINOR_VERSION 4
13*287e80b3SSadaf Ebrahimi #if YY_FLEX_SUBMINOR_VERSION > 0
14*287e80b3SSadaf Ebrahimi #define FLEX_BETA
15*287e80b3SSadaf Ebrahimi #endif
16*287e80b3SSadaf Ebrahimi 
17*287e80b3SSadaf Ebrahimi #ifdef yyget_lval
18*287e80b3SSadaf Ebrahimi #define yyget_lval_ALREADY_DEFINED
19*287e80b3SSadaf Ebrahimi #else
20*287e80b3SSadaf Ebrahimi #define yyget_lval yyget_lval
21*287e80b3SSadaf Ebrahimi #endif
22*287e80b3SSadaf Ebrahimi 
23*287e80b3SSadaf Ebrahimi #ifdef yyset_lval
24*287e80b3SSadaf Ebrahimi #define yyset_lval_ALREADY_DEFINED
25*287e80b3SSadaf Ebrahimi #else
26*287e80b3SSadaf Ebrahimi #define yyset_lval yyset_lval
27*287e80b3SSadaf Ebrahimi #endif
28*287e80b3SSadaf Ebrahimi 
29*287e80b3SSadaf Ebrahimi /* First, we deal with  platform-specific or compiler-specific issues. */
30*287e80b3SSadaf Ebrahimi 
31*287e80b3SSadaf Ebrahimi /* begin standard C headers. */
32*287e80b3SSadaf Ebrahimi #include <stdio.h>
33*287e80b3SSadaf Ebrahimi #include <string.h>
34*287e80b3SSadaf Ebrahimi #include <errno.h>
35*287e80b3SSadaf Ebrahimi #include <stdlib.h>
36*287e80b3SSadaf Ebrahimi 
37*287e80b3SSadaf Ebrahimi /* end standard C headers. */
38*287e80b3SSadaf Ebrahimi 
39*287e80b3SSadaf Ebrahimi /* flex integer type definitions */
40*287e80b3SSadaf Ebrahimi 
41*287e80b3SSadaf Ebrahimi #ifndef FLEXINT_H
42*287e80b3SSadaf Ebrahimi #define FLEXINT_H
43*287e80b3SSadaf Ebrahimi 
44*287e80b3SSadaf Ebrahimi /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
45*287e80b3SSadaf Ebrahimi 
46*287e80b3SSadaf Ebrahimi #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
47*287e80b3SSadaf Ebrahimi 
48*287e80b3SSadaf Ebrahimi /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
49*287e80b3SSadaf Ebrahimi  * if you want the limit (max/min) macros for int types.
50*287e80b3SSadaf Ebrahimi  */
51*287e80b3SSadaf Ebrahimi #ifndef __STDC_LIMIT_MACROS
52*287e80b3SSadaf Ebrahimi #define __STDC_LIMIT_MACROS 1
53*287e80b3SSadaf Ebrahimi #endif
54*287e80b3SSadaf Ebrahimi 
55*287e80b3SSadaf Ebrahimi #include <inttypes.h>
56*287e80b3SSadaf Ebrahimi typedef int8_t flex_int8_t;
57*287e80b3SSadaf Ebrahimi typedef uint8_t flex_uint8_t;
58*287e80b3SSadaf Ebrahimi typedef int16_t flex_int16_t;
59*287e80b3SSadaf Ebrahimi typedef uint16_t flex_uint16_t;
60*287e80b3SSadaf Ebrahimi typedef int32_t flex_int32_t;
61*287e80b3SSadaf Ebrahimi typedef uint32_t flex_uint32_t;
62*287e80b3SSadaf Ebrahimi #else
63*287e80b3SSadaf Ebrahimi typedef signed char flex_int8_t;
64*287e80b3SSadaf Ebrahimi typedef short int flex_int16_t;
65*287e80b3SSadaf Ebrahimi typedef int flex_int32_t;
66*287e80b3SSadaf Ebrahimi typedef unsigned char flex_uint8_t;
67*287e80b3SSadaf Ebrahimi typedef unsigned short int flex_uint16_t;
68*287e80b3SSadaf Ebrahimi typedef unsigned int flex_uint32_t;
69*287e80b3SSadaf Ebrahimi 
70*287e80b3SSadaf Ebrahimi /* Limits of integral types. */
71*287e80b3SSadaf Ebrahimi #ifndef INT8_MIN
72*287e80b3SSadaf Ebrahimi #define INT8_MIN               (-128)
73*287e80b3SSadaf Ebrahimi #endif
74*287e80b3SSadaf Ebrahimi #ifndef INT16_MIN
75*287e80b3SSadaf Ebrahimi #define INT16_MIN              (-32767-1)
76*287e80b3SSadaf Ebrahimi #endif
77*287e80b3SSadaf Ebrahimi #ifndef INT32_MIN
78*287e80b3SSadaf Ebrahimi #define INT32_MIN              (-2147483647-1)
79*287e80b3SSadaf Ebrahimi #endif
80*287e80b3SSadaf Ebrahimi #ifndef INT8_MAX
81*287e80b3SSadaf Ebrahimi #define INT8_MAX               (127)
82*287e80b3SSadaf Ebrahimi #endif
83*287e80b3SSadaf Ebrahimi #ifndef INT16_MAX
84*287e80b3SSadaf Ebrahimi #define INT16_MAX              (32767)
85*287e80b3SSadaf Ebrahimi #endif
86*287e80b3SSadaf Ebrahimi #ifndef INT32_MAX
87*287e80b3SSadaf Ebrahimi #define INT32_MAX              (2147483647)
88*287e80b3SSadaf Ebrahimi #endif
89*287e80b3SSadaf Ebrahimi #ifndef UINT8_MAX
90*287e80b3SSadaf Ebrahimi #define UINT8_MAX              (255U)
91*287e80b3SSadaf Ebrahimi #endif
92*287e80b3SSadaf Ebrahimi #ifndef UINT16_MAX
93*287e80b3SSadaf Ebrahimi #define UINT16_MAX             (65535U)
94*287e80b3SSadaf Ebrahimi #endif
95*287e80b3SSadaf Ebrahimi #ifndef UINT32_MAX
96*287e80b3SSadaf Ebrahimi #define UINT32_MAX             (4294967295U)
97*287e80b3SSadaf Ebrahimi #endif
98*287e80b3SSadaf Ebrahimi 
99*287e80b3SSadaf Ebrahimi #ifndef SIZE_MAX
100*287e80b3SSadaf Ebrahimi #define SIZE_MAX               (~(size_t)0)
101*287e80b3SSadaf Ebrahimi #endif
102*287e80b3SSadaf Ebrahimi 
103*287e80b3SSadaf Ebrahimi #endif /* ! C99 */
104*287e80b3SSadaf Ebrahimi 
105*287e80b3SSadaf Ebrahimi #endif /* ! FLEXINT_H */
106*287e80b3SSadaf Ebrahimi 
107*287e80b3SSadaf Ebrahimi /* begin standard C++ headers. */
108*287e80b3SSadaf Ebrahimi 
109*287e80b3SSadaf Ebrahimi /* TODO: this is always defined, so inline it */
110*287e80b3SSadaf Ebrahimi #define yyconst const
111*287e80b3SSadaf Ebrahimi 
112*287e80b3SSadaf Ebrahimi #if defined(__GNUC__) && __GNUC__ >= 3
113*287e80b3SSadaf Ebrahimi #define yynoreturn __attribute__((__noreturn__))
114*287e80b3SSadaf Ebrahimi #else
115*287e80b3SSadaf Ebrahimi #define yynoreturn
116*287e80b3SSadaf Ebrahimi #endif
117*287e80b3SSadaf Ebrahimi 
118*287e80b3SSadaf Ebrahimi /* Returned upon end-of-file. */
119*287e80b3SSadaf Ebrahimi #define YY_NULL 0
120*287e80b3SSadaf Ebrahimi 
121*287e80b3SSadaf Ebrahimi /* Promotes a possibly negative, possibly signed char to an
122*287e80b3SSadaf Ebrahimi  *   integer in range [0..255] for use as an array index.
123*287e80b3SSadaf Ebrahimi  */
124*287e80b3SSadaf Ebrahimi #define YY_SC_TO_UI(c) ((YY_CHAR) (c))
125*287e80b3SSadaf Ebrahimi 
126*287e80b3SSadaf Ebrahimi /* An opaque pointer. */
127*287e80b3SSadaf Ebrahimi #ifndef YY_TYPEDEF_YY_SCANNER_T
128*287e80b3SSadaf Ebrahimi #define YY_TYPEDEF_YY_SCANNER_T
129*287e80b3SSadaf Ebrahimi typedef void* yyscan_t;
130*287e80b3SSadaf Ebrahimi #endif
131*287e80b3SSadaf Ebrahimi 
132*287e80b3SSadaf Ebrahimi /* For convenience, these vars (plus the bison vars far below)
133*287e80b3SSadaf Ebrahimi    are macros in the reentrant scanner. */
134*287e80b3SSadaf Ebrahimi #define yyin yyg->yyin_r
135*287e80b3SSadaf Ebrahimi #define yyout yyg->yyout_r
136*287e80b3SSadaf Ebrahimi #define yyextra yyg->yyextra_r
137*287e80b3SSadaf Ebrahimi #define yyleng yyg->yyleng_r
138*287e80b3SSadaf Ebrahimi #define yytext yyg->yytext_r
139*287e80b3SSadaf Ebrahimi #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
140*287e80b3SSadaf Ebrahimi #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
141*287e80b3SSadaf Ebrahimi #define yy_flex_debug yyg->yy_flex_debug_r
142*287e80b3SSadaf Ebrahimi 
143*287e80b3SSadaf Ebrahimi /* Enter a start condition.  This macro really ought to take a parameter,
144*287e80b3SSadaf Ebrahimi  * but we do it the disgusting crufty way forced on us by the ()-less
145*287e80b3SSadaf Ebrahimi  * definition of BEGIN.
146*287e80b3SSadaf Ebrahimi  */
147*287e80b3SSadaf Ebrahimi #define BEGIN yyg->yy_start = 1 + 2 *
148*287e80b3SSadaf Ebrahimi /* Translate the current start state into a value that can be later handed
149*287e80b3SSadaf Ebrahimi  * to BEGIN to return to the state.  The YYSTATE alias is for lex
150*287e80b3SSadaf Ebrahimi  * compatibility.
151*287e80b3SSadaf Ebrahimi  */
152*287e80b3SSadaf Ebrahimi #define YY_START ((yyg->yy_start - 1) / 2)
153*287e80b3SSadaf Ebrahimi #define YYSTATE YY_START
154*287e80b3SSadaf Ebrahimi /* Action number for EOF rule of a given start state. */
155*287e80b3SSadaf Ebrahimi #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
156*287e80b3SSadaf Ebrahimi /* Special action meaning "start processing a new file". */
157*287e80b3SSadaf Ebrahimi #define YY_NEW_FILE yyrestart( yyin , yyscanner )
158*287e80b3SSadaf Ebrahimi #define YY_END_OF_BUFFER_CHAR 0
159*287e80b3SSadaf Ebrahimi 
160*287e80b3SSadaf Ebrahimi /* Size of default input buffer. */
161*287e80b3SSadaf Ebrahimi #ifndef YY_BUF_SIZE
162*287e80b3SSadaf Ebrahimi #ifdef __ia64__
163*287e80b3SSadaf Ebrahimi /* On IA-64, the buffer size is 16k, not 8k.
164*287e80b3SSadaf Ebrahimi  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
165*287e80b3SSadaf Ebrahimi  * Ditto for the __ia64__ case accordingly.
166*287e80b3SSadaf Ebrahimi  */
167*287e80b3SSadaf Ebrahimi #define YY_BUF_SIZE 32768
168*287e80b3SSadaf Ebrahimi #else
169*287e80b3SSadaf Ebrahimi #define YY_BUF_SIZE 16384
170*287e80b3SSadaf Ebrahimi #endif /* __ia64__ */
171*287e80b3SSadaf Ebrahimi #endif
172*287e80b3SSadaf Ebrahimi 
173*287e80b3SSadaf Ebrahimi /* The state buf must be large enough to hold one state per character in the main buffer.
174*287e80b3SSadaf Ebrahimi  */
175*287e80b3SSadaf Ebrahimi #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
176*287e80b3SSadaf Ebrahimi 
177*287e80b3SSadaf Ebrahimi #ifndef YY_TYPEDEF_YY_BUFFER_STATE
178*287e80b3SSadaf Ebrahimi #define YY_TYPEDEF_YY_BUFFER_STATE
179*287e80b3SSadaf Ebrahimi typedef struct yy_buffer_state *YY_BUFFER_STATE;
180*287e80b3SSadaf Ebrahimi #endif
181*287e80b3SSadaf Ebrahimi 
182*287e80b3SSadaf Ebrahimi #ifndef YY_TYPEDEF_YY_SIZE_T
183*287e80b3SSadaf Ebrahimi #define YY_TYPEDEF_YY_SIZE_T
184*287e80b3SSadaf Ebrahimi typedef size_t yy_size_t;
185*287e80b3SSadaf Ebrahimi #endif
186*287e80b3SSadaf Ebrahimi 
187*287e80b3SSadaf Ebrahimi #define EOB_ACT_CONTINUE_SCAN 0
188*287e80b3SSadaf Ebrahimi #define EOB_ACT_END_OF_FILE 1
189*287e80b3SSadaf Ebrahimi #define EOB_ACT_LAST_MATCH 2
190*287e80b3SSadaf Ebrahimi 
191*287e80b3SSadaf Ebrahimi     #define YY_LESS_LINENO(n)
192*287e80b3SSadaf Ebrahimi     #define YY_LINENO_REWIND_TO(ptr)
193*287e80b3SSadaf Ebrahimi 
194*287e80b3SSadaf Ebrahimi /* Return all but the first "n" matched characters back to the input stream. */
195*287e80b3SSadaf Ebrahimi #define yyless(n) \
196*287e80b3SSadaf Ebrahimi 	do \
197*287e80b3SSadaf Ebrahimi 		{ \
198*287e80b3SSadaf Ebrahimi 		/* Undo effects of setting up yytext. */ \
199*287e80b3SSadaf Ebrahimi         int yyless_macro_arg = (n); \
200*287e80b3SSadaf Ebrahimi         YY_LESS_LINENO(yyless_macro_arg);\
201*287e80b3SSadaf Ebrahimi 		*yy_cp = yyg->yy_hold_char; \
202*287e80b3SSadaf Ebrahimi 		YY_RESTORE_YY_MORE_OFFSET \
203*287e80b3SSadaf Ebrahimi 		yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
204*287e80b3SSadaf Ebrahimi 		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
205*287e80b3SSadaf Ebrahimi 		} \
206*287e80b3SSadaf Ebrahimi 	while ( 0 )
207*287e80b3SSadaf Ebrahimi #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
208*287e80b3SSadaf Ebrahimi 
209*287e80b3SSadaf Ebrahimi #ifndef YY_STRUCT_YY_BUFFER_STATE
210*287e80b3SSadaf Ebrahimi #define YY_STRUCT_YY_BUFFER_STATE
211*287e80b3SSadaf Ebrahimi struct yy_buffer_state
212*287e80b3SSadaf Ebrahimi 	{
213*287e80b3SSadaf Ebrahimi 	FILE *yy_input_file;
214*287e80b3SSadaf Ebrahimi 
215*287e80b3SSadaf Ebrahimi 	char *yy_ch_buf;		/* input buffer */
216*287e80b3SSadaf Ebrahimi 	char *yy_buf_pos;		/* current position in input buffer */
217*287e80b3SSadaf Ebrahimi 
218*287e80b3SSadaf Ebrahimi 	/* Size of input buffer in bytes, not including room for EOB
219*287e80b3SSadaf Ebrahimi 	 * characters.
220*287e80b3SSadaf Ebrahimi 	 */
221*287e80b3SSadaf Ebrahimi 	int yy_buf_size;
222*287e80b3SSadaf Ebrahimi 
223*287e80b3SSadaf Ebrahimi 	/* Number of characters read into yy_ch_buf, not including EOB
224*287e80b3SSadaf Ebrahimi 	 * characters.
225*287e80b3SSadaf Ebrahimi 	 */
226*287e80b3SSadaf Ebrahimi 	int yy_n_chars;
227*287e80b3SSadaf Ebrahimi 
228*287e80b3SSadaf Ebrahimi 	/* Whether we "own" the buffer - i.e., we know we created it,
229*287e80b3SSadaf Ebrahimi 	 * and can realloc() it to grow it, and should free() it to
230*287e80b3SSadaf Ebrahimi 	 * delete it.
231*287e80b3SSadaf Ebrahimi 	 */
232*287e80b3SSadaf Ebrahimi 	int yy_is_our_buffer;
233*287e80b3SSadaf Ebrahimi 
234*287e80b3SSadaf Ebrahimi 	/* Whether this is an "interactive" input source; if so, and
235*287e80b3SSadaf Ebrahimi 	 * if we're using stdio for input, then we want to use getc()
236*287e80b3SSadaf Ebrahimi 	 * instead of fread(), to make sure we stop fetching input after
237*287e80b3SSadaf Ebrahimi 	 * each newline.
238*287e80b3SSadaf Ebrahimi 	 */
239*287e80b3SSadaf Ebrahimi 	int yy_is_interactive;
240*287e80b3SSadaf Ebrahimi 
241*287e80b3SSadaf Ebrahimi 	/* Whether we're considered to be at the beginning of a line.
242*287e80b3SSadaf Ebrahimi 	 * If so, '^' rules will be active on the next match, otherwise
243*287e80b3SSadaf Ebrahimi 	 * not.
244*287e80b3SSadaf Ebrahimi 	 */
245*287e80b3SSadaf Ebrahimi 	int yy_at_bol;
246*287e80b3SSadaf Ebrahimi 
247*287e80b3SSadaf Ebrahimi     int yy_bs_lineno; /**< The line count. */
248*287e80b3SSadaf Ebrahimi     int yy_bs_column; /**< The column count. */
249*287e80b3SSadaf Ebrahimi 
250*287e80b3SSadaf Ebrahimi 	/* Whether to try to fill the input buffer when we reach the
251*287e80b3SSadaf Ebrahimi 	 * end of it.
252*287e80b3SSadaf Ebrahimi 	 */
253*287e80b3SSadaf Ebrahimi 	int yy_fill_buffer;
254*287e80b3SSadaf Ebrahimi 
255*287e80b3SSadaf Ebrahimi 	int yy_buffer_status;
256*287e80b3SSadaf Ebrahimi 
257*287e80b3SSadaf Ebrahimi #define YY_BUFFER_NEW 0
258*287e80b3SSadaf Ebrahimi #define YY_BUFFER_NORMAL 1
259*287e80b3SSadaf Ebrahimi 	/* When an EOF's been seen but there's still some text to process
260*287e80b3SSadaf Ebrahimi 	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
261*287e80b3SSadaf Ebrahimi 	 * shouldn't try reading from the input source any more.  We might
262*287e80b3SSadaf Ebrahimi 	 * still have a bunch of tokens to match, though, because of
263*287e80b3SSadaf Ebrahimi 	 * possible backing-up.
264*287e80b3SSadaf Ebrahimi 	 *
265*287e80b3SSadaf Ebrahimi 	 * When we actually see the EOF, we change the status to "new"
266*287e80b3SSadaf Ebrahimi 	 * (via yyrestart()), so that the user can continue scanning by
267*287e80b3SSadaf Ebrahimi 	 * just pointing yyin at a new input file.
268*287e80b3SSadaf Ebrahimi 	 */
269*287e80b3SSadaf Ebrahimi #define YY_BUFFER_EOF_PENDING 2
270*287e80b3SSadaf Ebrahimi 
271*287e80b3SSadaf Ebrahimi 	};
272*287e80b3SSadaf Ebrahimi #endif /* !YY_STRUCT_YY_BUFFER_STATE */
273*287e80b3SSadaf Ebrahimi 
274*287e80b3SSadaf Ebrahimi /* We provide macros for accessing buffer states in case in the
275*287e80b3SSadaf Ebrahimi  * future we want to put the buffer states in a more general
276*287e80b3SSadaf Ebrahimi  * "scanner state".
277*287e80b3SSadaf Ebrahimi  *
278*287e80b3SSadaf Ebrahimi  * Returns the top of the stack, or NULL.
279*287e80b3SSadaf Ebrahimi  */
280*287e80b3SSadaf Ebrahimi #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
281*287e80b3SSadaf Ebrahimi                           ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
282*287e80b3SSadaf Ebrahimi                           : NULL)
283*287e80b3SSadaf Ebrahimi /* Same as previous macro, but useful when we know that the buffer stack is not
284*287e80b3SSadaf Ebrahimi  * NULL or when we need an lvalue. For internal use only.
285*287e80b3SSadaf Ebrahimi  */
286*287e80b3SSadaf Ebrahimi #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
287*287e80b3SSadaf Ebrahimi 
288*287e80b3SSadaf Ebrahimi void yyrestart ( FILE *input_file , yyscan_t yyscanner );
289*287e80b3SSadaf Ebrahimi void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
290*287e80b3SSadaf Ebrahimi YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner );
291*287e80b3SSadaf Ebrahimi void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
292*287e80b3SSadaf Ebrahimi void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
293*287e80b3SSadaf Ebrahimi void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
294*287e80b3SSadaf Ebrahimi void yypop_buffer_state ( yyscan_t yyscanner );
295*287e80b3SSadaf Ebrahimi 
296*287e80b3SSadaf Ebrahimi static void yyensure_buffer_stack ( yyscan_t yyscanner );
297*287e80b3SSadaf Ebrahimi static void yy_load_buffer_state ( yyscan_t yyscanner );
298*287e80b3SSadaf Ebrahimi static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner );
299*287e80b3SSadaf Ebrahimi #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner)
300*287e80b3SSadaf Ebrahimi 
301*287e80b3SSadaf Ebrahimi YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
302*287e80b3SSadaf Ebrahimi YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
303*287e80b3SSadaf Ebrahimi YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner );
304*287e80b3SSadaf Ebrahimi 
305*287e80b3SSadaf Ebrahimi void *yyalloc ( yy_size_t , yyscan_t yyscanner );
306*287e80b3SSadaf Ebrahimi void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
307*287e80b3SSadaf Ebrahimi void yyfree ( void * , yyscan_t yyscanner );
308*287e80b3SSadaf Ebrahimi 
309*287e80b3SSadaf Ebrahimi #define yy_new_buffer yy_create_buffer
310*287e80b3SSadaf Ebrahimi #define yy_set_interactive(is_interactive) \
311*287e80b3SSadaf Ebrahimi 	{ \
312*287e80b3SSadaf Ebrahimi 	if ( ! YY_CURRENT_BUFFER ){ \
313*287e80b3SSadaf Ebrahimi         yyensure_buffer_stack (yyscanner); \
314*287e80b3SSadaf Ebrahimi 		YY_CURRENT_BUFFER_LVALUE =    \
315*287e80b3SSadaf Ebrahimi             yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
316*287e80b3SSadaf Ebrahimi 	} \
317*287e80b3SSadaf Ebrahimi 	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
318*287e80b3SSadaf Ebrahimi 	}
319*287e80b3SSadaf Ebrahimi #define yy_set_bol(at_bol) \
320*287e80b3SSadaf Ebrahimi 	{ \
321*287e80b3SSadaf Ebrahimi 	if ( ! YY_CURRENT_BUFFER ){\
322*287e80b3SSadaf Ebrahimi         yyensure_buffer_stack (yyscanner); \
323*287e80b3SSadaf Ebrahimi 		YY_CURRENT_BUFFER_LVALUE =    \
324*287e80b3SSadaf Ebrahimi             yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
325*287e80b3SSadaf Ebrahimi 	} \
326*287e80b3SSadaf Ebrahimi 	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
327*287e80b3SSadaf Ebrahimi 	}
328*287e80b3SSadaf Ebrahimi #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
329*287e80b3SSadaf Ebrahimi 
330*287e80b3SSadaf Ebrahimi /* Begin user sect3 */
331*287e80b3SSadaf Ebrahimi typedef flex_uint8_t YY_CHAR;
332*287e80b3SSadaf Ebrahimi 
333*287e80b3SSadaf Ebrahimi typedef int yy_state_type;
334*287e80b3SSadaf Ebrahimi 
335*287e80b3SSadaf Ebrahimi #define yytext_ptr yytext_r
336*287e80b3SSadaf Ebrahimi 
337*287e80b3SSadaf Ebrahimi static yy_state_type yy_get_previous_state ( yyscan_t yyscanner );
338*287e80b3SSadaf Ebrahimi static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  , yyscan_t yyscanner);
339*287e80b3SSadaf Ebrahimi static int yy_get_next_buffer ( yyscan_t yyscanner );
340*287e80b3SSadaf Ebrahimi static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner );
341*287e80b3SSadaf Ebrahimi 
342*287e80b3SSadaf Ebrahimi /* Done after the current pattern has been matched and before the
343*287e80b3SSadaf Ebrahimi  * corresponding action - sets up yytext.
344*287e80b3SSadaf Ebrahimi  */
345*287e80b3SSadaf Ebrahimi #define YY_DO_BEFORE_ACTION \
346*287e80b3SSadaf Ebrahimi 	yyg->yytext_ptr = yy_bp; \
347*287e80b3SSadaf Ebrahimi 	yyleng = (int) (yy_cp - yy_bp); \
348*287e80b3SSadaf Ebrahimi 	yyg->yy_hold_char = *yy_cp; \
349*287e80b3SSadaf Ebrahimi 	*yy_cp = '\0'; \
350*287e80b3SSadaf Ebrahimi 	yyg->yy_c_buf_p = yy_cp;
351*287e80b3SSadaf Ebrahimi #define YY_NUM_RULES 24
352*287e80b3SSadaf Ebrahimi #define YY_END_OF_BUFFER 25
353*287e80b3SSadaf Ebrahimi /* This struct is not used in this scanner,
354*287e80b3SSadaf Ebrahimi    but its presence is necessary. */
355*287e80b3SSadaf Ebrahimi struct yy_trans_info
356*287e80b3SSadaf Ebrahimi 	{
357*287e80b3SSadaf Ebrahimi 	flex_int32_t yy_verify;
358*287e80b3SSadaf Ebrahimi 	flex_int32_t yy_nxt;
359*287e80b3SSadaf Ebrahimi 	};
360*287e80b3SSadaf Ebrahimi static const flex_int16_t yy_accept[72] =
361*287e80b3SSadaf Ebrahimi     {   0,
362*287e80b3SSadaf Ebrahimi         0,    0,   25,   23,   21,   22,   20,   23,   19,   20,
363*287e80b3SSadaf Ebrahimi        12,   12,   19,   20,   19,   10,   10,   10,   10,   10,
364*287e80b3SSadaf Ebrahimi        10,   10,   10,   10,   23,   23,   19,   13,    0,    9,
365*287e80b3SSadaf Ebrahimi        17,   12,    0,   14,   16,   15,   10,   10,    2,   10,
366*287e80b3SSadaf Ebrahimi        10,   10,    5,   10,   10,   10,   10,   18,   11,   10,
367*287e80b3SSadaf Ebrahimi        10,   10,   10,   10,   10,    7,    3,    4,   10,    0,
368*287e80b3SSadaf Ebrahimi        10,   10,    0,    6,    1,    0,    0,    0,    0,    8,
369*287e80b3SSadaf Ebrahimi         0
370*287e80b3SSadaf Ebrahimi     } ;
371*287e80b3SSadaf Ebrahimi 
372*287e80b3SSadaf Ebrahimi static const YY_CHAR yy_ec[256] =
373*287e80b3SSadaf Ebrahimi     {   0,
374*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
375*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
376*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
377*287e80b3SSadaf Ebrahimi         1,    2,    4,    5,    1,    1,    1,    6,    1,    7,
378*287e80b3SSadaf Ebrahimi         7,    7,    7,    7,    8,    9,    7,   10,   11,   11,
379*287e80b3SSadaf Ebrahimi        11,   11,   11,   11,   11,   11,   11,    1,    1,   12,
380*287e80b3SSadaf Ebrahimi        13,   14,    1,    1,   15,   16,   17,   16,   18,   19,
381*287e80b3SSadaf Ebrahimi        20,   21,   22,   23,   20,   24,   25,   26,   27,   20,
382*287e80b3SSadaf Ebrahimi        20,   28,   29,   30,   20,   20,   31,   32,   33,   20,
383*287e80b3SSadaf Ebrahimi         1,   34,    1,    1,   20,    1,   35,   16,   36,   16,
384*287e80b3SSadaf Ebrahimi 
385*287e80b3SSadaf Ebrahimi        37,   38,   20,   39,   40,   41,   20,   42,   43,   44,
386*287e80b3SSadaf Ebrahimi        45,   20,   20,   46,   47,   48,   20,   20,   49,   50,
387*287e80b3SSadaf Ebrahimi        51,   20,    1,   52,    1,   53,    1,    1,    1,    1,
388*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
389*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
390*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
391*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
392*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
393*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
394*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
395*287e80b3SSadaf Ebrahimi 
396*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
397*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
398*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
399*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
400*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
401*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1
402*287e80b3SSadaf Ebrahimi     } ;
403*287e80b3SSadaf Ebrahimi 
404*287e80b3SSadaf Ebrahimi static const YY_CHAR yy_meta[54] =
405*287e80b3SSadaf Ebrahimi     {   0,
406*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
407*287e80b3SSadaf Ebrahimi         3,    1,    1,    1,    4,    4,    4,    4,    4,    5,
408*287e80b3SSadaf Ebrahimi         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
409*287e80b3SSadaf Ebrahimi         5,    6,    5,    1,    4,    4,    4,    4,    5,    5,
410*287e80b3SSadaf Ebrahimi         5,    5,    5,    5,    5,    5,    5,    5,    5,    6,
411*287e80b3SSadaf Ebrahimi         5,    1,    1
412*287e80b3SSadaf Ebrahimi     } ;
413*287e80b3SSadaf Ebrahimi 
414*287e80b3SSadaf Ebrahimi static const flex_int16_t yy_base[77] =
415*287e80b3SSadaf Ebrahimi     {   0,
416*287e80b3SSadaf Ebrahimi         0,    0,   94,  180,  180,  180,   58,   62,   59,  180,
417*287e80b3SSadaf Ebrahimi        22,   23,   51,   50,   49,   64,  102,   41,   31,    0,
418*287e80b3SSadaf Ebrahimi        33,   40,   52,   47,    0,    9,  180,  180,   53,  180,
419*287e80b3SSadaf Ebrahimi       180,   37,    0,  180,  180,  180,    0,    0,    0,   59,
420*287e80b3SSadaf Ebrahimi        63,   69,    0,   68,   71,   79,    0,  180,    0,   74,
421*287e80b3SSadaf Ebrahimi        80,   81,   97,   49,   96,    0,    0,    0,  109,  101,
422*287e80b3SSadaf Ebrahimi       111,  101,  113,    0,    0,  114,  106,  118,  111,  180,
423*287e80b3SSadaf Ebrahimi       180,  159,  163,  168,  171,  175
424*287e80b3SSadaf Ebrahimi     } ;
425*287e80b3SSadaf Ebrahimi 
426*287e80b3SSadaf Ebrahimi static const flex_int16_t yy_def[77] =
427*287e80b3SSadaf Ebrahimi     {   0,
428*287e80b3SSadaf Ebrahimi        71,    1,   71,   71,   71,   71,   71,   72,   71,   71,
429*287e80b3SSadaf Ebrahimi        73,   73,   71,   71,   71,   74,   74,   17,   17,   74,
430*287e80b3SSadaf Ebrahimi        74,   74,   74,   74,   75,   71,   71,   71,   72,   71,
431*287e80b3SSadaf Ebrahimi        71,   73,   76,   71,   71,   71,   74,   17,   74,   17,
432*287e80b3SSadaf Ebrahimi        74,   74,   74,   74,   74,   74,   74,   71,   76,   74,
433*287e80b3SSadaf Ebrahimi        74,   74,   74,   74,   74,   74,   74,   74,   74,   71,
434*287e80b3SSadaf Ebrahimi        74,   74,   71,   74,   74,   71,   71,   71,   71,   71,
435*287e80b3SSadaf Ebrahimi         0,   71,   71,   71,   71,   71
436*287e80b3SSadaf Ebrahimi     } ;
437*287e80b3SSadaf Ebrahimi 
438*287e80b3SSadaf Ebrahimi static const flex_int16_t yy_nxt[234] =
439*287e80b3SSadaf Ebrahimi     {   0,
440*287e80b3SSadaf Ebrahimi         4,    5,    6,    7,    8,    9,   10,   10,    4,   11,
441*287e80b3SSadaf Ebrahimi        12,   13,   14,   15,   16,   17,   18,   17,   19,   20,
442*287e80b3SSadaf Ebrahimi        20,   20,   21,   20,   20,   20,   22,   20,   23,   20,
443*287e80b3SSadaf Ebrahimi        24,   20,   20,   25,   16,   18,   17,   19,   20,   20,
444*287e80b3SSadaf Ebrahimi        21,   20,   20,   20,   22,   20,   23,   20,   24,   20,
445*287e80b3SSadaf Ebrahimi        20,   26,   27,   33,   71,   40,   60,   30,   41,   42,
446*287e80b3SSadaf Ebrahimi        48,   36,   35,   34,   31,   43,   30,   46,   71,   44,
447*287e80b3SSadaf Ebrahimi        28,   33,   71,   38,   38,   40,   41,   42,   38,   38,
448*287e80b3SSadaf Ebrahimi        38,   38,   38,   43,   45,   46,   71,   50,   44,   51,
449*287e80b3SSadaf Ebrahimi        52,   53,   39,   71,   71,   54,   55,   71,   38,   38,
450*287e80b3SSadaf Ebrahimi 
451*287e80b3SSadaf Ebrahimi        38,   38,   45,   56,   57,   50,   58,   51,   52,   53,
452*287e80b3SSadaf Ebrahimi        39,   38,   38,   54,   59,   55,   38,   38,   38,   38,
453*287e80b3SSadaf Ebrahimi        38,   56,   57,   61,   58,   62,   71,   63,   64,   71,
454*287e80b3SSadaf Ebrahimi        65,   66,   67,   59,   68,   69,   38,   38,   38,   38,
455*287e80b3SSadaf Ebrahimi        70,   61,   71,   71,   62,   63,   71,   64,   65,   71,
456*287e80b3SSadaf Ebrahimi        66,   67,   68,   71,   69,   71,   71,   71,   70,   29,
457*287e80b3SSadaf Ebrahimi        29,   29,   29,   29,   29,   32,   32,   71,   32,   37,
458*287e80b3SSadaf Ebrahimi        37,   37,   37,   37,   47,   47,   47,   49,   49,    3,
459*287e80b3SSadaf Ebrahimi        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
460*287e80b3SSadaf Ebrahimi        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
461*287e80b3SSadaf Ebrahimi 
462*287e80b3SSadaf Ebrahimi        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
463*287e80b3SSadaf Ebrahimi        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
464*287e80b3SSadaf Ebrahimi        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
465*287e80b3SSadaf Ebrahimi        71,   71,   71
466*287e80b3SSadaf Ebrahimi     } ;
467*287e80b3SSadaf Ebrahimi 
468*287e80b3SSadaf Ebrahimi static const flex_int16_t yy_chk[234] =
469*287e80b3SSadaf Ebrahimi     {   0,
470*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
471*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
472*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
473*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
474*287e80b3SSadaf Ebrahimi         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
475*287e80b3SSadaf Ebrahimi         1,    1,    1,   11,   12,   18,   54,   29,   19,   21,
476*287e80b3SSadaf Ebrahimi        26,   15,   14,   13,    9,   22,    8,   24,   32,   23,
477*287e80b3SSadaf Ebrahimi         7,   11,   12,   16,   16,   18,   19,   21,   16,   16,
478*287e80b3SSadaf Ebrahimi        16,   16,   16,   22,   23,   24,   32,   40,   23,   41,
479*287e80b3SSadaf Ebrahimi        42,   44,   16,    3,    0,   45,   46,    0,   16,   16,
480*287e80b3SSadaf Ebrahimi 
481*287e80b3SSadaf Ebrahimi        16,   16,   23,   50,   51,   40,   52,   41,   42,   44,
482*287e80b3SSadaf Ebrahimi        16,   17,   17,   45,   53,   46,   17,   17,   17,   17,
483*287e80b3SSadaf Ebrahimi        17,   50,   51,   55,   52,   59,    0,   60,   61,    0,
484*287e80b3SSadaf Ebrahimi        62,   63,   66,   53,   67,   68,   17,   17,   17,   17,
485*287e80b3SSadaf Ebrahimi        69,   55,    0,    0,   59,   60,    0,   61,   62,    0,
486*287e80b3SSadaf Ebrahimi        63,   66,   67,    0,   68,    0,    0,    0,   69,   72,
487*287e80b3SSadaf Ebrahimi        72,   72,   72,   72,   72,   73,   73,    0,   73,   74,
488*287e80b3SSadaf Ebrahimi        74,   74,   74,   74,   75,   75,   75,   76,   76,   71,
489*287e80b3SSadaf Ebrahimi        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
490*287e80b3SSadaf Ebrahimi        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
491*287e80b3SSadaf Ebrahimi 
492*287e80b3SSadaf Ebrahimi        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
493*287e80b3SSadaf Ebrahimi        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
494*287e80b3SSadaf Ebrahimi        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
495*287e80b3SSadaf Ebrahimi        71,   71,   71
496*287e80b3SSadaf Ebrahimi     } ;
497*287e80b3SSadaf Ebrahimi 
498*287e80b3SSadaf Ebrahimi /* The intent behind this definition is that it'll catch
499*287e80b3SSadaf Ebrahimi  * any uses of REJECT which flex missed.
500*287e80b3SSadaf Ebrahimi  */
501*287e80b3SSadaf Ebrahimi #define REJECT reject_used_but_not_detected
502*287e80b3SSadaf Ebrahimi #define yymore() yymore_used_but_not_detected
503*287e80b3SSadaf Ebrahimi #define YY_MORE_ADJ 0
504*287e80b3SSadaf Ebrahimi #define YY_RESTORE_YY_MORE_OFFSET
505*287e80b3SSadaf Ebrahimi #line 1 "sqlhist.l"
506*287e80b3SSadaf Ebrahimi #line 2 "sqlhist.l"
507*287e80b3SSadaf Ebrahimi /* code here */
508*287e80b3SSadaf Ebrahimi 
509*287e80b3SSadaf Ebrahimi #include <stdarg.h>
510*287e80b3SSadaf Ebrahimi #include "sqlhist-parse.h"
511*287e80b3SSadaf Ebrahimi 
512*287e80b3SSadaf Ebrahimi extern int my_yyinput(void *extra, char *buf, int max);
513*287e80b3SSadaf Ebrahimi 
514*287e80b3SSadaf Ebrahimi #undef YY_INPUT
515*287e80b3SSadaf Ebrahimi #define YY_INPUT(b, r, m) ({r = my_yyinput(yyextra, b, m);})
516*287e80b3SSadaf Ebrahimi 
517*287e80b3SSadaf Ebrahimi #define YY_NO_INPUT
518*287e80b3SSadaf Ebrahimi #define YY_NO_UNPUT
519*287e80b3SSadaf Ebrahimi 
520*287e80b3SSadaf Ebrahimi #define YY_EXTRA_TYPE struct sqlhist_bison *
521*287e80b3SSadaf Ebrahimi 
522*287e80b3SSadaf Ebrahimi #define yytext yyg->yytext_r
523*287e80b3SSadaf Ebrahimi 
524*287e80b3SSadaf Ebrahimi #define TRACE_SB	((struct sqlhist_bison *)yyextra)
525*287e80b3SSadaf Ebrahimi #define HANDLE_COLUMN do { TRACE_SB->line_idx += strlen(yytext); } while (0)
526*287e80b3SSadaf Ebrahimi 
527*287e80b3SSadaf Ebrahimi #line 527 "sqlhist-lex.c"
528*287e80b3SSadaf Ebrahimi #line 528 "sqlhist-lex.c"
529*287e80b3SSadaf Ebrahimi 
530*287e80b3SSadaf Ebrahimi #define INITIAL 0
531*287e80b3SSadaf Ebrahimi 
532*287e80b3SSadaf Ebrahimi #ifndef YY_NO_UNISTD_H
533*287e80b3SSadaf Ebrahimi /* Special case for "unistd.h", since it is non-ANSI. We include it way
534*287e80b3SSadaf Ebrahimi  * down here because we want the user's section 1 to have been scanned first.
535*287e80b3SSadaf Ebrahimi  * The user has a chance to override it with an option.
536*287e80b3SSadaf Ebrahimi  */
537*287e80b3SSadaf Ebrahimi #include <unistd.h>
538*287e80b3SSadaf Ebrahimi #endif
539*287e80b3SSadaf Ebrahimi 
540*287e80b3SSadaf Ebrahimi #ifndef YY_EXTRA_TYPE
541*287e80b3SSadaf Ebrahimi #define YY_EXTRA_TYPE void *
542*287e80b3SSadaf Ebrahimi #endif
543*287e80b3SSadaf Ebrahimi 
544*287e80b3SSadaf Ebrahimi /* Holds the entire state of the reentrant scanner. */
545*287e80b3SSadaf Ebrahimi struct yyguts_t
546*287e80b3SSadaf Ebrahimi     {
547*287e80b3SSadaf Ebrahimi 
548*287e80b3SSadaf Ebrahimi     /* User-defined. Not touched by flex. */
549*287e80b3SSadaf Ebrahimi     YY_EXTRA_TYPE yyextra_r;
550*287e80b3SSadaf Ebrahimi 
551*287e80b3SSadaf Ebrahimi     /* The rest are the same as the globals declared in the non-reentrant scanner. */
552*287e80b3SSadaf Ebrahimi     FILE *yyin_r, *yyout_r;
553*287e80b3SSadaf Ebrahimi     size_t yy_buffer_stack_top; /**< index of top of stack. */
554*287e80b3SSadaf Ebrahimi     size_t yy_buffer_stack_max; /**< capacity of stack. */
555*287e80b3SSadaf Ebrahimi     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
556*287e80b3SSadaf Ebrahimi     char yy_hold_char;
557*287e80b3SSadaf Ebrahimi     int yy_n_chars;
558*287e80b3SSadaf Ebrahimi     int yyleng_r;
559*287e80b3SSadaf Ebrahimi     char *yy_c_buf_p;
560*287e80b3SSadaf Ebrahimi     int yy_init;
561*287e80b3SSadaf Ebrahimi     int yy_start;
562*287e80b3SSadaf Ebrahimi     int yy_did_buffer_switch_on_eof;
563*287e80b3SSadaf Ebrahimi     int yy_start_stack_ptr;
564*287e80b3SSadaf Ebrahimi     int yy_start_stack_depth;
565*287e80b3SSadaf Ebrahimi     int *yy_start_stack;
566*287e80b3SSadaf Ebrahimi     yy_state_type yy_last_accepting_state;
567*287e80b3SSadaf Ebrahimi     char* yy_last_accepting_cpos;
568*287e80b3SSadaf Ebrahimi 
569*287e80b3SSadaf Ebrahimi     int yylineno_r;
570*287e80b3SSadaf Ebrahimi     int yy_flex_debug_r;
571*287e80b3SSadaf Ebrahimi 
572*287e80b3SSadaf Ebrahimi     char *yytext_r;
573*287e80b3SSadaf Ebrahimi     int yy_more_flag;
574*287e80b3SSadaf Ebrahimi     int yy_more_len;
575*287e80b3SSadaf Ebrahimi 
576*287e80b3SSadaf Ebrahimi     YYSTYPE * yylval_r;
577*287e80b3SSadaf Ebrahimi 
578*287e80b3SSadaf Ebrahimi     }; /* end struct yyguts_t */
579*287e80b3SSadaf Ebrahimi 
580*287e80b3SSadaf Ebrahimi static int yy_init_globals ( yyscan_t yyscanner );
581*287e80b3SSadaf Ebrahimi 
582*287e80b3SSadaf Ebrahimi     /* This must go here because YYSTYPE and YYLTYPE are included
583*287e80b3SSadaf Ebrahimi      * from bison output in section 1.*/
584*287e80b3SSadaf Ebrahimi     #    define yylval yyg->yylval_r
585*287e80b3SSadaf Ebrahimi 
586*287e80b3SSadaf Ebrahimi int yylex_init (yyscan_t* scanner);
587*287e80b3SSadaf Ebrahimi 
588*287e80b3SSadaf Ebrahimi int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
589*287e80b3SSadaf Ebrahimi 
590*287e80b3SSadaf Ebrahimi /* Accessor methods to globals.
591*287e80b3SSadaf Ebrahimi    These are made visible to non-reentrant scanners for convenience. */
592*287e80b3SSadaf Ebrahimi 
593*287e80b3SSadaf Ebrahimi int yylex_destroy ( yyscan_t yyscanner );
594*287e80b3SSadaf Ebrahimi 
595*287e80b3SSadaf Ebrahimi int yyget_debug ( yyscan_t yyscanner );
596*287e80b3SSadaf Ebrahimi 
597*287e80b3SSadaf Ebrahimi void yyset_debug ( int debug_flag , yyscan_t yyscanner );
598*287e80b3SSadaf Ebrahimi 
599*287e80b3SSadaf Ebrahimi YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner );
600*287e80b3SSadaf Ebrahimi 
601*287e80b3SSadaf Ebrahimi void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
602*287e80b3SSadaf Ebrahimi 
603*287e80b3SSadaf Ebrahimi FILE *yyget_in ( yyscan_t yyscanner );
604*287e80b3SSadaf Ebrahimi 
605*287e80b3SSadaf Ebrahimi void yyset_in  ( FILE * _in_str , yyscan_t yyscanner );
606*287e80b3SSadaf Ebrahimi 
607*287e80b3SSadaf Ebrahimi FILE *yyget_out ( yyscan_t yyscanner );
608*287e80b3SSadaf Ebrahimi 
609*287e80b3SSadaf Ebrahimi void yyset_out  ( FILE * _out_str , yyscan_t yyscanner );
610*287e80b3SSadaf Ebrahimi 
611*287e80b3SSadaf Ebrahimi 			int yyget_leng ( yyscan_t yyscanner );
612*287e80b3SSadaf Ebrahimi 
613*287e80b3SSadaf Ebrahimi char *yyget_text ( yyscan_t yyscanner );
614*287e80b3SSadaf Ebrahimi 
615*287e80b3SSadaf Ebrahimi int yyget_lineno ( yyscan_t yyscanner );
616*287e80b3SSadaf Ebrahimi 
617*287e80b3SSadaf Ebrahimi void yyset_lineno ( int _line_number , yyscan_t yyscanner );
618*287e80b3SSadaf Ebrahimi 
619*287e80b3SSadaf Ebrahimi int yyget_column  ( yyscan_t yyscanner );
620*287e80b3SSadaf Ebrahimi 
621*287e80b3SSadaf Ebrahimi void yyset_column ( int _column_no , yyscan_t yyscanner );
622*287e80b3SSadaf Ebrahimi 
623*287e80b3SSadaf Ebrahimi YYSTYPE * yyget_lval ( yyscan_t yyscanner );
624*287e80b3SSadaf Ebrahimi 
625*287e80b3SSadaf Ebrahimi void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
626*287e80b3SSadaf Ebrahimi 
627*287e80b3SSadaf Ebrahimi /* Macros after this point can all be overridden by user definitions in
628*287e80b3SSadaf Ebrahimi  * section 1.
629*287e80b3SSadaf Ebrahimi  */
630*287e80b3SSadaf Ebrahimi 
631*287e80b3SSadaf Ebrahimi #ifndef YY_SKIP_YYWRAP
632*287e80b3SSadaf Ebrahimi #ifdef __cplusplus
633*287e80b3SSadaf Ebrahimi extern "C" int yywrap ( yyscan_t yyscanner );
634*287e80b3SSadaf Ebrahimi #else
635*287e80b3SSadaf Ebrahimi extern int yywrap ( yyscan_t yyscanner );
636*287e80b3SSadaf Ebrahimi #endif
637*287e80b3SSadaf Ebrahimi #endif
638*287e80b3SSadaf Ebrahimi 
639*287e80b3SSadaf Ebrahimi #ifndef YY_NO_UNPUT
640*287e80b3SSadaf Ebrahimi 
641*287e80b3SSadaf Ebrahimi     static void yyunput ( int c, char *buf_ptr  , yyscan_t yyscanner);
642*287e80b3SSadaf Ebrahimi 
643*287e80b3SSadaf Ebrahimi #endif
644*287e80b3SSadaf Ebrahimi 
645*287e80b3SSadaf Ebrahimi #ifndef yytext_ptr
646*287e80b3SSadaf Ebrahimi static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner);
647*287e80b3SSadaf Ebrahimi #endif
648*287e80b3SSadaf Ebrahimi 
649*287e80b3SSadaf Ebrahimi #ifdef YY_NEED_STRLEN
650*287e80b3SSadaf Ebrahimi static int yy_flex_strlen ( const char * , yyscan_t yyscanner);
651*287e80b3SSadaf Ebrahimi #endif
652*287e80b3SSadaf Ebrahimi 
653*287e80b3SSadaf Ebrahimi #ifndef YY_NO_INPUT
654*287e80b3SSadaf Ebrahimi #ifdef __cplusplus
655*287e80b3SSadaf Ebrahimi static int yyinput ( yyscan_t yyscanner );
656*287e80b3SSadaf Ebrahimi #else
657*287e80b3SSadaf Ebrahimi static int input ( yyscan_t yyscanner );
658*287e80b3SSadaf Ebrahimi #endif
659*287e80b3SSadaf Ebrahimi 
660*287e80b3SSadaf Ebrahimi #endif
661*287e80b3SSadaf Ebrahimi 
662*287e80b3SSadaf Ebrahimi /* Amount of stuff to slurp up with each read. */
663*287e80b3SSadaf Ebrahimi #ifndef YY_READ_BUF_SIZE
664*287e80b3SSadaf Ebrahimi #ifdef __ia64__
665*287e80b3SSadaf Ebrahimi /* On IA-64, the buffer size is 16k, not 8k */
666*287e80b3SSadaf Ebrahimi #define YY_READ_BUF_SIZE 16384
667*287e80b3SSadaf Ebrahimi #else
668*287e80b3SSadaf Ebrahimi #define YY_READ_BUF_SIZE 8192
669*287e80b3SSadaf Ebrahimi #endif /* __ia64__ */
670*287e80b3SSadaf Ebrahimi #endif
671*287e80b3SSadaf Ebrahimi 
672*287e80b3SSadaf Ebrahimi /* Copy whatever the last rule matched to the standard output. */
673*287e80b3SSadaf Ebrahimi #ifndef ECHO
674*287e80b3SSadaf Ebrahimi /* This used to be an fputs(), but since the string might contain NUL's,
675*287e80b3SSadaf Ebrahimi  * we now use fwrite().
676*287e80b3SSadaf Ebrahimi  */
677*287e80b3SSadaf Ebrahimi #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
678*287e80b3SSadaf Ebrahimi #endif
679*287e80b3SSadaf Ebrahimi 
680*287e80b3SSadaf Ebrahimi /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
681*287e80b3SSadaf Ebrahimi  * is returned in "result".
682*287e80b3SSadaf Ebrahimi  */
683*287e80b3SSadaf Ebrahimi #ifndef YY_INPUT
684*287e80b3SSadaf Ebrahimi #define YY_INPUT(buf,result,max_size) \
685*287e80b3SSadaf Ebrahimi 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
686*287e80b3SSadaf Ebrahimi 		{ \
687*287e80b3SSadaf Ebrahimi 		int c = '*'; \
688*287e80b3SSadaf Ebrahimi 		int n; \
689*287e80b3SSadaf Ebrahimi 		for ( n = 0; n < max_size && \
690*287e80b3SSadaf Ebrahimi 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
691*287e80b3SSadaf Ebrahimi 			buf[n] = (char) c; \
692*287e80b3SSadaf Ebrahimi 		if ( c == '\n' ) \
693*287e80b3SSadaf Ebrahimi 			buf[n++] = (char) c; \
694*287e80b3SSadaf Ebrahimi 		if ( c == EOF && ferror( yyin ) ) \
695*287e80b3SSadaf Ebrahimi 			YY_FATAL_ERROR( "input in flex scanner failed" ); \
696*287e80b3SSadaf Ebrahimi 		result = n; \
697*287e80b3SSadaf Ebrahimi 		} \
698*287e80b3SSadaf Ebrahimi 	else \
699*287e80b3SSadaf Ebrahimi 		{ \
700*287e80b3SSadaf Ebrahimi 		errno=0; \
701*287e80b3SSadaf Ebrahimi 		while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
702*287e80b3SSadaf Ebrahimi 			{ \
703*287e80b3SSadaf Ebrahimi 			if( errno != EINTR) \
704*287e80b3SSadaf Ebrahimi 				{ \
705*287e80b3SSadaf Ebrahimi 				YY_FATAL_ERROR( "input in flex scanner failed" ); \
706*287e80b3SSadaf Ebrahimi 				break; \
707*287e80b3SSadaf Ebrahimi 				} \
708*287e80b3SSadaf Ebrahimi 			errno=0; \
709*287e80b3SSadaf Ebrahimi 			clearerr(yyin); \
710*287e80b3SSadaf Ebrahimi 			} \
711*287e80b3SSadaf Ebrahimi 		}\
712*287e80b3SSadaf Ebrahimi \
713*287e80b3SSadaf Ebrahimi 
714*287e80b3SSadaf Ebrahimi #endif
715*287e80b3SSadaf Ebrahimi 
716*287e80b3SSadaf Ebrahimi /* No semi-colon after return; correct usage is to write "yyterminate();" -
717*287e80b3SSadaf Ebrahimi  * we don't want an extra ';' after the "return" because that will cause
718*287e80b3SSadaf Ebrahimi  * some compilers to complain about unreachable statements.
719*287e80b3SSadaf Ebrahimi  */
720*287e80b3SSadaf Ebrahimi #ifndef yyterminate
721*287e80b3SSadaf Ebrahimi #define yyterminate() return YY_NULL
722*287e80b3SSadaf Ebrahimi #endif
723*287e80b3SSadaf Ebrahimi 
724*287e80b3SSadaf Ebrahimi /* Number of entries by which start-condition stack grows. */
725*287e80b3SSadaf Ebrahimi #ifndef YY_START_STACK_INCR
726*287e80b3SSadaf Ebrahimi #define YY_START_STACK_INCR 25
727*287e80b3SSadaf Ebrahimi #endif
728*287e80b3SSadaf Ebrahimi 
729*287e80b3SSadaf Ebrahimi /* Report a fatal error. */
730*287e80b3SSadaf Ebrahimi #ifndef YY_FATAL_ERROR
731*287e80b3SSadaf Ebrahimi #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
732*287e80b3SSadaf Ebrahimi #endif
733*287e80b3SSadaf Ebrahimi 
734*287e80b3SSadaf Ebrahimi /* end tables serialization structures and prototypes */
735*287e80b3SSadaf Ebrahimi 
736*287e80b3SSadaf Ebrahimi /* Default declaration of generated scanner - a define so the user can
737*287e80b3SSadaf Ebrahimi  * easily add parameters.
738*287e80b3SSadaf Ebrahimi  */
739*287e80b3SSadaf Ebrahimi #ifndef YY_DECL
740*287e80b3SSadaf Ebrahimi #define YY_DECL_IS_OURS 1
741*287e80b3SSadaf Ebrahimi 
742*287e80b3SSadaf Ebrahimi extern int yylex \
743*287e80b3SSadaf Ebrahimi                (YYSTYPE * yylval_param , yyscan_t yyscanner);
744*287e80b3SSadaf Ebrahimi 
745*287e80b3SSadaf Ebrahimi #define YY_DECL int yylex \
746*287e80b3SSadaf Ebrahimi                (YYSTYPE * yylval_param , yyscan_t yyscanner)
747*287e80b3SSadaf Ebrahimi #endif /* !YY_DECL */
748*287e80b3SSadaf Ebrahimi 
749*287e80b3SSadaf Ebrahimi /* Code executed at the beginning of each rule, after yytext and yyleng
750*287e80b3SSadaf Ebrahimi  * have been set up.
751*287e80b3SSadaf Ebrahimi  */
752*287e80b3SSadaf Ebrahimi #ifndef YY_USER_ACTION
753*287e80b3SSadaf Ebrahimi #define YY_USER_ACTION
754*287e80b3SSadaf Ebrahimi #endif
755*287e80b3SSadaf Ebrahimi 
756*287e80b3SSadaf Ebrahimi /* Code executed at the end of each rule. */
757*287e80b3SSadaf Ebrahimi #ifndef YY_BREAK
758*287e80b3SSadaf Ebrahimi #define YY_BREAK /*LINTED*/break;
759*287e80b3SSadaf Ebrahimi #endif
760*287e80b3SSadaf Ebrahimi 
761*287e80b3SSadaf Ebrahimi #define YY_RULE_SETUP \
762*287e80b3SSadaf Ebrahimi 	YY_USER_ACTION
763*287e80b3SSadaf Ebrahimi 
764*287e80b3SSadaf Ebrahimi /** The main scanner function which does all the work.
765*287e80b3SSadaf Ebrahimi  */
766*287e80b3SSadaf Ebrahimi YY_DECL
767*287e80b3SSadaf Ebrahimi {
768*287e80b3SSadaf Ebrahimi 	yy_state_type yy_current_state;
769*287e80b3SSadaf Ebrahimi 	char *yy_cp, *yy_bp;
770*287e80b3SSadaf Ebrahimi 	int yy_act;
771*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
772*287e80b3SSadaf Ebrahimi 
773*287e80b3SSadaf Ebrahimi     yylval = yylval_param;
774*287e80b3SSadaf Ebrahimi 
775*287e80b3SSadaf Ebrahimi 	if ( !yyg->yy_init )
776*287e80b3SSadaf Ebrahimi 		{
777*287e80b3SSadaf Ebrahimi 		yyg->yy_init = 1;
778*287e80b3SSadaf Ebrahimi 
779*287e80b3SSadaf Ebrahimi #ifdef YY_USER_INIT
780*287e80b3SSadaf Ebrahimi 		YY_USER_INIT;
781*287e80b3SSadaf Ebrahimi #endif
782*287e80b3SSadaf Ebrahimi 
783*287e80b3SSadaf Ebrahimi 		if ( ! yyg->yy_start )
784*287e80b3SSadaf Ebrahimi 			yyg->yy_start = 1;	/* first start state */
785*287e80b3SSadaf Ebrahimi 
786*287e80b3SSadaf Ebrahimi 		if ( ! yyin )
787*287e80b3SSadaf Ebrahimi 			yyin = stdin;
788*287e80b3SSadaf Ebrahimi 
789*287e80b3SSadaf Ebrahimi 		if ( ! yyout )
790*287e80b3SSadaf Ebrahimi 			yyout = stdout;
791*287e80b3SSadaf Ebrahimi 
792*287e80b3SSadaf Ebrahimi 		if ( ! YY_CURRENT_BUFFER ) {
793*287e80b3SSadaf Ebrahimi 			yyensure_buffer_stack (yyscanner);
794*287e80b3SSadaf Ebrahimi 			YY_CURRENT_BUFFER_LVALUE =
795*287e80b3SSadaf Ebrahimi 				yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
796*287e80b3SSadaf Ebrahimi 		}
797*287e80b3SSadaf Ebrahimi 
798*287e80b3SSadaf Ebrahimi 		yy_load_buffer_state( yyscanner );
799*287e80b3SSadaf Ebrahimi 		}
800*287e80b3SSadaf Ebrahimi 
801*287e80b3SSadaf Ebrahimi 	{
802*287e80b3SSadaf Ebrahimi #line 33 "sqlhist.l"
803*287e80b3SSadaf Ebrahimi 
804*287e80b3SSadaf Ebrahimi 
805*287e80b3SSadaf Ebrahimi #line 805 "sqlhist-lex.c"
806*287e80b3SSadaf Ebrahimi 
807*287e80b3SSadaf Ebrahimi 	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
808*287e80b3SSadaf Ebrahimi 		{
809*287e80b3SSadaf Ebrahimi 		yy_cp = yyg->yy_c_buf_p;
810*287e80b3SSadaf Ebrahimi 
811*287e80b3SSadaf Ebrahimi 		/* Support of yytext. */
812*287e80b3SSadaf Ebrahimi 		*yy_cp = yyg->yy_hold_char;
813*287e80b3SSadaf Ebrahimi 
814*287e80b3SSadaf Ebrahimi 		/* yy_bp points to the position in yy_ch_buf of the start of
815*287e80b3SSadaf Ebrahimi 		 * the current run.
816*287e80b3SSadaf Ebrahimi 		 */
817*287e80b3SSadaf Ebrahimi 		yy_bp = yy_cp;
818*287e80b3SSadaf Ebrahimi 
819*287e80b3SSadaf Ebrahimi 		yy_current_state = yyg->yy_start;
820*287e80b3SSadaf Ebrahimi yy_match:
821*287e80b3SSadaf Ebrahimi 		do
822*287e80b3SSadaf Ebrahimi 			{
823*287e80b3SSadaf Ebrahimi 			YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
824*287e80b3SSadaf Ebrahimi 			if ( yy_accept[yy_current_state] )
825*287e80b3SSadaf Ebrahimi 				{
826*287e80b3SSadaf Ebrahimi 				yyg->yy_last_accepting_state = yy_current_state;
827*287e80b3SSadaf Ebrahimi 				yyg->yy_last_accepting_cpos = yy_cp;
828*287e80b3SSadaf Ebrahimi 				}
829*287e80b3SSadaf Ebrahimi 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
830*287e80b3SSadaf Ebrahimi 				{
831*287e80b3SSadaf Ebrahimi 				yy_current_state = (int) yy_def[yy_current_state];
832*287e80b3SSadaf Ebrahimi 				if ( yy_current_state >= 72 )
833*287e80b3SSadaf Ebrahimi 					yy_c = yy_meta[yy_c];
834*287e80b3SSadaf Ebrahimi 				}
835*287e80b3SSadaf Ebrahimi 			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
836*287e80b3SSadaf Ebrahimi 			++yy_cp;
837*287e80b3SSadaf Ebrahimi 			}
838*287e80b3SSadaf Ebrahimi 		while ( yy_base[yy_current_state] != 180 );
839*287e80b3SSadaf Ebrahimi 
840*287e80b3SSadaf Ebrahimi yy_find_action:
841*287e80b3SSadaf Ebrahimi 		yy_act = yy_accept[yy_current_state];
842*287e80b3SSadaf Ebrahimi 		if ( yy_act == 0 )
843*287e80b3SSadaf Ebrahimi 			{ /* have to back up */
844*287e80b3SSadaf Ebrahimi 			yy_cp = yyg->yy_last_accepting_cpos;
845*287e80b3SSadaf Ebrahimi 			yy_current_state = yyg->yy_last_accepting_state;
846*287e80b3SSadaf Ebrahimi 			yy_act = yy_accept[yy_current_state];
847*287e80b3SSadaf Ebrahimi 			}
848*287e80b3SSadaf Ebrahimi 
849*287e80b3SSadaf Ebrahimi 		YY_DO_BEFORE_ACTION;
850*287e80b3SSadaf Ebrahimi 
851*287e80b3SSadaf Ebrahimi do_action:	/* This label is used only to access EOF actions. */
852*287e80b3SSadaf Ebrahimi 
853*287e80b3SSadaf Ebrahimi 		switch ( yy_act )
854*287e80b3SSadaf Ebrahimi 	{ /* beginning of action switch */
855*287e80b3SSadaf Ebrahimi 			case 0: /* must back up */
856*287e80b3SSadaf Ebrahimi 			/* undo the effects of YY_DO_BEFORE_ACTION */
857*287e80b3SSadaf Ebrahimi 			*yy_cp = yyg->yy_hold_char;
858*287e80b3SSadaf Ebrahimi 			yy_cp = yyg->yy_last_accepting_cpos;
859*287e80b3SSadaf Ebrahimi 			yy_current_state = yyg->yy_last_accepting_state;
860*287e80b3SSadaf Ebrahimi 			goto yy_find_action;
861*287e80b3SSadaf Ebrahimi 
862*287e80b3SSadaf Ebrahimi case 1:
863*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
864*287e80b3SSadaf Ebrahimi #line 35 "sqlhist.l"
865*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; return SELECT; }
866*287e80b3SSadaf Ebrahimi 	YY_BREAK
867*287e80b3SSadaf Ebrahimi case 2:
868*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
869*287e80b3SSadaf Ebrahimi #line 36 "sqlhist.l"
870*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; return AS; }
871*287e80b3SSadaf Ebrahimi 	YY_BREAK
872*287e80b3SSadaf Ebrahimi case 3:
873*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
874*287e80b3SSadaf Ebrahimi #line 37 "sqlhist.l"
875*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; return FROM; }
876*287e80b3SSadaf Ebrahimi 	YY_BREAK
877*287e80b3SSadaf Ebrahimi case 4:
878*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
879*287e80b3SSadaf Ebrahimi #line 38 "sqlhist.l"
880*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; return JOIN; }
881*287e80b3SSadaf Ebrahimi 	YY_BREAK
882*287e80b3SSadaf Ebrahimi case 5:
883*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
884*287e80b3SSadaf Ebrahimi #line 39 "sqlhist.l"
885*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; return ON; }
886*287e80b3SSadaf Ebrahimi 	YY_BREAK
887*287e80b3SSadaf Ebrahimi case 6:
888*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
889*287e80b3SSadaf Ebrahimi #line 40 "sqlhist.l"
890*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; return WHERE; }
891*287e80b3SSadaf Ebrahimi 	YY_BREAK
892*287e80b3SSadaf Ebrahimi case 7:
893*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
894*287e80b3SSadaf Ebrahimi #line 41 "sqlhist.l"
895*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; return CAST; }
896*287e80b3SSadaf Ebrahimi 	YY_BREAK
897*287e80b3SSadaf Ebrahimi case 8:
898*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
899*287e80b3SSadaf Ebrahimi #line 43 "sqlhist.l"
900*287e80b3SSadaf Ebrahimi {
901*287e80b3SSadaf Ebrahimi 	HANDLE_COLUMN;
902*287e80b3SSadaf Ebrahimi 	yylval->string = store_str(TRACE_SB, yyg->yytext_r);
903*287e80b3SSadaf Ebrahimi 	return FIELD;
904*287e80b3SSadaf Ebrahimi }
905*287e80b3SSadaf Ebrahimi 	YY_BREAK
906*287e80b3SSadaf Ebrahimi case 9:
907*287e80b3SSadaf Ebrahimi /* rule 9 can match eol */
908*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
909*287e80b3SSadaf Ebrahimi #line 49 "sqlhist.l"
910*287e80b3SSadaf Ebrahimi {
911*287e80b3SSadaf Ebrahimi 	HANDLE_COLUMN;
912*287e80b3SSadaf Ebrahimi 	yylval->string = store_str(TRACE_SB, yyg->yytext_r);
913*287e80b3SSadaf Ebrahimi 	return STRING;
914*287e80b3SSadaf Ebrahimi }
915*287e80b3SSadaf Ebrahimi 	YY_BREAK
916*287e80b3SSadaf Ebrahimi case 10:
917*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
918*287e80b3SSadaf Ebrahimi #line 55 "sqlhist.l"
919*287e80b3SSadaf Ebrahimi {
920*287e80b3SSadaf Ebrahimi 	const char *str = yyg->yytext_r;
921*287e80b3SSadaf Ebrahimi 	HANDLE_COLUMN;
922*287e80b3SSadaf Ebrahimi 	if (str[0] == '\\') { str++; };
923*287e80b3SSadaf Ebrahimi 	yylval->string = store_str(TRACE_SB, str);
924*287e80b3SSadaf Ebrahimi 	return FIELD;
925*287e80b3SSadaf Ebrahimi }
926*287e80b3SSadaf Ebrahimi 	YY_BREAK
927*287e80b3SSadaf Ebrahimi case 11:
928*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
929*287e80b3SSadaf Ebrahimi #line 63 "sqlhist.l"
930*287e80b3SSadaf Ebrahimi {
931*287e80b3SSadaf Ebrahimi 	HANDLE_COLUMN;
932*287e80b3SSadaf Ebrahimi 	yylval->number = strtol(yyg->yytext_r, NULL, 0);
933*287e80b3SSadaf Ebrahimi 	return NUMBER;
934*287e80b3SSadaf Ebrahimi }
935*287e80b3SSadaf Ebrahimi 	YY_BREAK
936*287e80b3SSadaf Ebrahimi case 12:
937*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
938*287e80b3SSadaf Ebrahimi #line 69 "sqlhist.l"
939*287e80b3SSadaf Ebrahimi {
940*287e80b3SSadaf Ebrahimi 	HANDLE_COLUMN;
941*287e80b3SSadaf Ebrahimi 	yylval->number = strtol(yyg->yytext_r, NULL, 0);
942*287e80b3SSadaf Ebrahimi 	return NUMBER;
943*287e80b3SSadaf Ebrahimi }
944*287e80b3SSadaf Ebrahimi 	YY_BREAK
945*287e80b3SSadaf Ebrahimi case 13:
946*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
947*287e80b3SSadaf Ebrahimi #line 75 "sqlhist.l"
948*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; return NEQ; }
949*287e80b3SSadaf Ebrahimi 	YY_BREAK
950*287e80b3SSadaf Ebrahimi case 14:
951*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
952*287e80b3SSadaf Ebrahimi #line 76 "sqlhist.l"
953*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; return LE; }
954*287e80b3SSadaf Ebrahimi 	YY_BREAK
955*287e80b3SSadaf Ebrahimi case 15:
956*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
957*287e80b3SSadaf Ebrahimi #line 77 "sqlhist.l"
958*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; return GE; }
959*287e80b3SSadaf Ebrahimi 	YY_BREAK
960*287e80b3SSadaf Ebrahimi case 16:
961*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
962*287e80b3SSadaf Ebrahimi #line 78 "sqlhist.l"
963*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; return EQ; }
964*287e80b3SSadaf Ebrahimi 	YY_BREAK
965*287e80b3SSadaf Ebrahimi case 17:
966*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
967*287e80b3SSadaf Ebrahimi #line 79 "sqlhist.l"
968*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; return AND; }
969*287e80b3SSadaf Ebrahimi 	YY_BREAK
970*287e80b3SSadaf Ebrahimi case 18:
971*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
972*287e80b3SSadaf Ebrahimi #line 80 "sqlhist.l"
973*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; return OR; }
974*287e80b3SSadaf Ebrahimi 	YY_BREAK
975*287e80b3SSadaf Ebrahimi case 19:
976*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
977*287e80b3SSadaf Ebrahimi #line 81 "sqlhist.l"
978*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; return yytext[0]; }
979*287e80b3SSadaf Ebrahimi 	YY_BREAK
980*287e80b3SSadaf Ebrahimi case 20:
981*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
982*287e80b3SSadaf Ebrahimi #line 83 "sqlhist.l"
983*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; return yytext[0]; }
984*287e80b3SSadaf Ebrahimi 	YY_BREAK
985*287e80b3SSadaf Ebrahimi case 21:
986*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
987*287e80b3SSadaf Ebrahimi #line 85 "sqlhist.l"
988*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; }
989*287e80b3SSadaf Ebrahimi 	YY_BREAK
990*287e80b3SSadaf Ebrahimi case 22:
991*287e80b3SSadaf Ebrahimi /* rule 22 can match eol */
992*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
993*287e80b3SSadaf Ebrahimi #line 86 "sqlhist.l"
994*287e80b3SSadaf Ebrahimi { TRACE_SB->line_idx = 0; TRACE_SB->line_no++; }
995*287e80b3SSadaf Ebrahimi 	YY_BREAK
996*287e80b3SSadaf Ebrahimi case 23:
997*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
998*287e80b3SSadaf Ebrahimi #line 88 "sqlhist.l"
999*287e80b3SSadaf Ebrahimi { HANDLE_COLUMN; return PARSE_ERROR; }
1000*287e80b3SSadaf Ebrahimi 	YY_BREAK
1001*287e80b3SSadaf Ebrahimi case 24:
1002*287e80b3SSadaf Ebrahimi YY_RULE_SETUP
1003*287e80b3SSadaf Ebrahimi #line 89 "sqlhist.l"
1004*287e80b3SSadaf Ebrahimi ECHO;
1005*287e80b3SSadaf Ebrahimi 	YY_BREAK
1006*287e80b3SSadaf Ebrahimi #line 1006 "sqlhist-lex.c"
1007*287e80b3SSadaf Ebrahimi case YY_STATE_EOF(INITIAL):
1008*287e80b3SSadaf Ebrahimi 	yyterminate();
1009*287e80b3SSadaf Ebrahimi 
1010*287e80b3SSadaf Ebrahimi 	case YY_END_OF_BUFFER:
1011*287e80b3SSadaf Ebrahimi 		{
1012*287e80b3SSadaf Ebrahimi 		/* Amount of text matched not including the EOB char. */
1013*287e80b3SSadaf Ebrahimi 		int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
1014*287e80b3SSadaf Ebrahimi 
1015*287e80b3SSadaf Ebrahimi 		/* Undo the effects of YY_DO_BEFORE_ACTION. */
1016*287e80b3SSadaf Ebrahimi 		*yy_cp = yyg->yy_hold_char;
1017*287e80b3SSadaf Ebrahimi 		YY_RESTORE_YY_MORE_OFFSET
1018*287e80b3SSadaf Ebrahimi 
1019*287e80b3SSadaf Ebrahimi 		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1020*287e80b3SSadaf Ebrahimi 			{
1021*287e80b3SSadaf Ebrahimi 			/* We're scanning a new file or input source.  It's
1022*287e80b3SSadaf Ebrahimi 			 * possible that this happened because the user
1023*287e80b3SSadaf Ebrahimi 			 * just pointed yyin at a new source and called
1024*287e80b3SSadaf Ebrahimi 			 * yylex().  If so, then we have to assure
1025*287e80b3SSadaf Ebrahimi 			 * consistency between YY_CURRENT_BUFFER and our
1026*287e80b3SSadaf Ebrahimi 			 * globals.  Here is the right place to do so, because
1027*287e80b3SSadaf Ebrahimi 			 * this is the first action (other than possibly a
1028*287e80b3SSadaf Ebrahimi 			 * back-up) that will match for the new input source.
1029*287e80b3SSadaf Ebrahimi 			 */
1030*287e80b3SSadaf Ebrahimi 			yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1031*287e80b3SSadaf Ebrahimi 			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
1032*287e80b3SSadaf Ebrahimi 			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1033*287e80b3SSadaf Ebrahimi 			}
1034*287e80b3SSadaf Ebrahimi 
1035*287e80b3SSadaf Ebrahimi 		/* Note that here we test for yy_c_buf_p "<=" to the position
1036*287e80b3SSadaf Ebrahimi 		 * of the first EOB in the buffer, since yy_c_buf_p will
1037*287e80b3SSadaf Ebrahimi 		 * already have been incremented past the NUL character
1038*287e80b3SSadaf Ebrahimi 		 * (since all states make transitions on EOB to the
1039*287e80b3SSadaf Ebrahimi 		 * end-of-buffer state).  Contrast this with the test
1040*287e80b3SSadaf Ebrahimi 		 * in input().
1041*287e80b3SSadaf Ebrahimi 		 */
1042*287e80b3SSadaf Ebrahimi 		if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
1043*287e80b3SSadaf Ebrahimi 			{ /* This was really a NUL. */
1044*287e80b3SSadaf Ebrahimi 			yy_state_type yy_next_state;
1045*287e80b3SSadaf Ebrahimi 
1046*287e80b3SSadaf Ebrahimi 			yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
1047*287e80b3SSadaf Ebrahimi 
1048*287e80b3SSadaf Ebrahimi 			yy_current_state = yy_get_previous_state( yyscanner );
1049*287e80b3SSadaf Ebrahimi 
1050*287e80b3SSadaf Ebrahimi 			/* Okay, we're now positioned to make the NUL
1051*287e80b3SSadaf Ebrahimi 			 * transition.  We couldn't have
1052*287e80b3SSadaf Ebrahimi 			 * yy_get_previous_state() go ahead and do it
1053*287e80b3SSadaf Ebrahimi 			 * for us because it doesn't know how to deal
1054*287e80b3SSadaf Ebrahimi 			 * with the possibility of jamming (and we don't
1055*287e80b3SSadaf Ebrahimi 			 * want to build jamming into it because then it
1056*287e80b3SSadaf Ebrahimi 			 * will run more slowly).
1057*287e80b3SSadaf Ebrahimi 			 */
1058*287e80b3SSadaf Ebrahimi 
1059*287e80b3SSadaf Ebrahimi 			yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
1060*287e80b3SSadaf Ebrahimi 
1061*287e80b3SSadaf Ebrahimi 			yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1062*287e80b3SSadaf Ebrahimi 
1063*287e80b3SSadaf Ebrahimi 			if ( yy_next_state )
1064*287e80b3SSadaf Ebrahimi 				{
1065*287e80b3SSadaf Ebrahimi 				/* Consume the NUL. */
1066*287e80b3SSadaf Ebrahimi 				yy_cp = ++yyg->yy_c_buf_p;
1067*287e80b3SSadaf Ebrahimi 				yy_current_state = yy_next_state;
1068*287e80b3SSadaf Ebrahimi 				goto yy_match;
1069*287e80b3SSadaf Ebrahimi 				}
1070*287e80b3SSadaf Ebrahimi 
1071*287e80b3SSadaf Ebrahimi 			else
1072*287e80b3SSadaf Ebrahimi 				{
1073*287e80b3SSadaf Ebrahimi 				yy_cp = yyg->yy_c_buf_p;
1074*287e80b3SSadaf Ebrahimi 				goto yy_find_action;
1075*287e80b3SSadaf Ebrahimi 				}
1076*287e80b3SSadaf Ebrahimi 			}
1077*287e80b3SSadaf Ebrahimi 
1078*287e80b3SSadaf Ebrahimi 		else switch ( yy_get_next_buffer( yyscanner ) )
1079*287e80b3SSadaf Ebrahimi 			{
1080*287e80b3SSadaf Ebrahimi 			case EOB_ACT_END_OF_FILE:
1081*287e80b3SSadaf Ebrahimi 				{
1082*287e80b3SSadaf Ebrahimi 				yyg->yy_did_buffer_switch_on_eof = 0;
1083*287e80b3SSadaf Ebrahimi 
1084*287e80b3SSadaf Ebrahimi 				if ( yywrap( yyscanner ) )
1085*287e80b3SSadaf Ebrahimi 					{
1086*287e80b3SSadaf Ebrahimi 					/* Note: because we've taken care in
1087*287e80b3SSadaf Ebrahimi 					 * yy_get_next_buffer() to have set up
1088*287e80b3SSadaf Ebrahimi 					 * yytext, we can now set up
1089*287e80b3SSadaf Ebrahimi 					 * yy_c_buf_p so that if some total
1090*287e80b3SSadaf Ebrahimi 					 * hoser (like flex itself) wants to
1091*287e80b3SSadaf Ebrahimi 					 * call the scanner after we return the
1092*287e80b3SSadaf Ebrahimi 					 * YY_NULL, it'll still work - another
1093*287e80b3SSadaf Ebrahimi 					 * YY_NULL will get returned.
1094*287e80b3SSadaf Ebrahimi 					 */
1095*287e80b3SSadaf Ebrahimi 					yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
1096*287e80b3SSadaf Ebrahimi 
1097*287e80b3SSadaf Ebrahimi 					yy_act = YY_STATE_EOF(YY_START);
1098*287e80b3SSadaf Ebrahimi 					goto do_action;
1099*287e80b3SSadaf Ebrahimi 					}
1100*287e80b3SSadaf Ebrahimi 
1101*287e80b3SSadaf Ebrahimi 				else
1102*287e80b3SSadaf Ebrahimi 					{
1103*287e80b3SSadaf Ebrahimi 					if ( ! yyg->yy_did_buffer_switch_on_eof )
1104*287e80b3SSadaf Ebrahimi 						YY_NEW_FILE;
1105*287e80b3SSadaf Ebrahimi 					}
1106*287e80b3SSadaf Ebrahimi 				break;
1107*287e80b3SSadaf Ebrahimi 				}
1108*287e80b3SSadaf Ebrahimi 
1109*287e80b3SSadaf Ebrahimi 			case EOB_ACT_CONTINUE_SCAN:
1110*287e80b3SSadaf Ebrahimi 				yyg->yy_c_buf_p =
1111*287e80b3SSadaf Ebrahimi 					yyg->yytext_ptr + yy_amount_of_matched_text;
1112*287e80b3SSadaf Ebrahimi 
1113*287e80b3SSadaf Ebrahimi 				yy_current_state = yy_get_previous_state( yyscanner );
1114*287e80b3SSadaf Ebrahimi 
1115*287e80b3SSadaf Ebrahimi 				yy_cp = yyg->yy_c_buf_p;
1116*287e80b3SSadaf Ebrahimi 				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1117*287e80b3SSadaf Ebrahimi 				goto yy_match;
1118*287e80b3SSadaf Ebrahimi 
1119*287e80b3SSadaf Ebrahimi 			case EOB_ACT_LAST_MATCH:
1120*287e80b3SSadaf Ebrahimi 				yyg->yy_c_buf_p =
1121*287e80b3SSadaf Ebrahimi 				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
1122*287e80b3SSadaf Ebrahimi 
1123*287e80b3SSadaf Ebrahimi 				yy_current_state = yy_get_previous_state( yyscanner );
1124*287e80b3SSadaf Ebrahimi 
1125*287e80b3SSadaf Ebrahimi 				yy_cp = yyg->yy_c_buf_p;
1126*287e80b3SSadaf Ebrahimi 				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1127*287e80b3SSadaf Ebrahimi 				goto yy_find_action;
1128*287e80b3SSadaf Ebrahimi 			}
1129*287e80b3SSadaf Ebrahimi 		break;
1130*287e80b3SSadaf Ebrahimi 		}
1131*287e80b3SSadaf Ebrahimi 
1132*287e80b3SSadaf Ebrahimi 	default:
1133*287e80b3SSadaf Ebrahimi 		YY_FATAL_ERROR(
1134*287e80b3SSadaf Ebrahimi 			"fatal flex scanner internal error--no action found" );
1135*287e80b3SSadaf Ebrahimi 	} /* end of action switch */
1136*287e80b3SSadaf Ebrahimi 		} /* end of scanning one token */
1137*287e80b3SSadaf Ebrahimi 	} /* end of user's declarations */
1138*287e80b3SSadaf Ebrahimi } /* end of yylex */
1139*287e80b3SSadaf Ebrahimi 
1140*287e80b3SSadaf Ebrahimi /* yy_get_next_buffer - try to read in a new buffer
1141*287e80b3SSadaf Ebrahimi  *
1142*287e80b3SSadaf Ebrahimi  * Returns a code representing an action:
1143*287e80b3SSadaf Ebrahimi  *	EOB_ACT_LAST_MATCH -
1144*287e80b3SSadaf Ebrahimi  *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1145*287e80b3SSadaf Ebrahimi  *	EOB_ACT_END_OF_FILE - end of file
1146*287e80b3SSadaf Ebrahimi  */
yy_get_next_buffer(yyscan_t yyscanner)1147*287e80b3SSadaf Ebrahimi static int yy_get_next_buffer (yyscan_t yyscanner)
1148*287e80b3SSadaf Ebrahimi {
1149*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1150*287e80b3SSadaf Ebrahimi 	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1151*287e80b3SSadaf Ebrahimi 	char *source = yyg->yytext_ptr;
1152*287e80b3SSadaf Ebrahimi 	int number_to_move, i;
1153*287e80b3SSadaf Ebrahimi 	int ret_val;
1154*287e80b3SSadaf Ebrahimi 
1155*287e80b3SSadaf Ebrahimi 	if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
1156*287e80b3SSadaf Ebrahimi 		YY_FATAL_ERROR(
1157*287e80b3SSadaf Ebrahimi 		"fatal flex scanner internal error--end of buffer missed" );
1158*287e80b3SSadaf Ebrahimi 
1159*287e80b3SSadaf Ebrahimi 	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1160*287e80b3SSadaf Ebrahimi 		{ /* Don't try to fill the buffer, so this is an EOF. */
1161*287e80b3SSadaf Ebrahimi 		if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
1162*287e80b3SSadaf Ebrahimi 			{
1163*287e80b3SSadaf Ebrahimi 			/* We matched a single character, the EOB, so
1164*287e80b3SSadaf Ebrahimi 			 * treat this as a final EOF.
1165*287e80b3SSadaf Ebrahimi 			 */
1166*287e80b3SSadaf Ebrahimi 			return EOB_ACT_END_OF_FILE;
1167*287e80b3SSadaf Ebrahimi 			}
1168*287e80b3SSadaf Ebrahimi 
1169*287e80b3SSadaf Ebrahimi 		else
1170*287e80b3SSadaf Ebrahimi 			{
1171*287e80b3SSadaf Ebrahimi 			/* We matched some text prior to the EOB, first
1172*287e80b3SSadaf Ebrahimi 			 * process it.
1173*287e80b3SSadaf Ebrahimi 			 */
1174*287e80b3SSadaf Ebrahimi 			return EOB_ACT_LAST_MATCH;
1175*287e80b3SSadaf Ebrahimi 			}
1176*287e80b3SSadaf Ebrahimi 		}
1177*287e80b3SSadaf Ebrahimi 
1178*287e80b3SSadaf Ebrahimi 	/* Try to read more data. */
1179*287e80b3SSadaf Ebrahimi 
1180*287e80b3SSadaf Ebrahimi 	/* First move last chars to start of buffer. */
1181*287e80b3SSadaf Ebrahimi 	number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1);
1182*287e80b3SSadaf Ebrahimi 
1183*287e80b3SSadaf Ebrahimi 	for ( i = 0; i < number_to_move; ++i )
1184*287e80b3SSadaf Ebrahimi 		*(dest++) = *(source++);
1185*287e80b3SSadaf Ebrahimi 
1186*287e80b3SSadaf Ebrahimi 	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1187*287e80b3SSadaf Ebrahimi 		/* don't do the read, it's not guaranteed to return an EOF,
1188*287e80b3SSadaf Ebrahimi 		 * just force an EOF
1189*287e80b3SSadaf Ebrahimi 		 */
1190*287e80b3SSadaf Ebrahimi 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
1191*287e80b3SSadaf Ebrahimi 
1192*287e80b3SSadaf Ebrahimi 	else
1193*287e80b3SSadaf Ebrahimi 		{
1194*287e80b3SSadaf Ebrahimi 			int num_to_read =
1195*287e80b3SSadaf Ebrahimi 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1196*287e80b3SSadaf Ebrahimi 
1197*287e80b3SSadaf Ebrahimi 		while ( num_to_read <= 0 )
1198*287e80b3SSadaf Ebrahimi 			{ /* Not enough room in the buffer - grow it. */
1199*287e80b3SSadaf Ebrahimi 
1200*287e80b3SSadaf Ebrahimi 			/* just a shorter name for the current buffer */
1201*287e80b3SSadaf Ebrahimi 			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
1202*287e80b3SSadaf Ebrahimi 
1203*287e80b3SSadaf Ebrahimi 			int yy_c_buf_p_offset =
1204*287e80b3SSadaf Ebrahimi 				(int) (yyg->yy_c_buf_p - b->yy_ch_buf);
1205*287e80b3SSadaf Ebrahimi 
1206*287e80b3SSadaf Ebrahimi 			if ( b->yy_is_our_buffer )
1207*287e80b3SSadaf Ebrahimi 				{
1208*287e80b3SSadaf Ebrahimi 				int new_size = b->yy_buf_size * 2;
1209*287e80b3SSadaf Ebrahimi 
1210*287e80b3SSadaf Ebrahimi 				if ( new_size <= 0 )
1211*287e80b3SSadaf Ebrahimi 					b->yy_buf_size += b->yy_buf_size / 8;
1212*287e80b3SSadaf Ebrahimi 				else
1213*287e80b3SSadaf Ebrahimi 					b->yy_buf_size *= 2;
1214*287e80b3SSadaf Ebrahimi 
1215*287e80b3SSadaf Ebrahimi 				b->yy_ch_buf = (char *)
1216*287e80b3SSadaf Ebrahimi 					/* Include room in for 2 EOB chars. */
1217*287e80b3SSadaf Ebrahimi 					yyrealloc( (void *) b->yy_ch_buf,
1218*287e80b3SSadaf Ebrahimi 							 (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
1219*287e80b3SSadaf Ebrahimi 				}
1220*287e80b3SSadaf Ebrahimi 			else
1221*287e80b3SSadaf Ebrahimi 				/* Can't grow it, we don't own it. */
1222*287e80b3SSadaf Ebrahimi 				b->yy_ch_buf = NULL;
1223*287e80b3SSadaf Ebrahimi 
1224*287e80b3SSadaf Ebrahimi 			if ( ! b->yy_ch_buf )
1225*287e80b3SSadaf Ebrahimi 				YY_FATAL_ERROR(
1226*287e80b3SSadaf Ebrahimi 				"fatal error - scanner input buffer overflow" );
1227*287e80b3SSadaf Ebrahimi 
1228*287e80b3SSadaf Ebrahimi 			yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1229*287e80b3SSadaf Ebrahimi 
1230*287e80b3SSadaf Ebrahimi 			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
1231*287e80b3SSadaf Ebrahimi 						number_to_move - 1;
1232*287e80b3SSadaf Ebrahimi 
1233*287e80b3SSadaf Ebrahimi 			}
1234*287e80b3SSadaf Ebrahimi 
1235*287e80b3SSadaf Ebrahimi 		if ( num_to_read > YY_READ_BUF_SIZE )
1236*287e80b3SSadaf Ebrahimi 			num_to_read = YY_READ_BUF_SIZE;
1237*287e80b3SSadaf Ebrahimi 
1238*287e80b3SSadaf Ebrahimi 		/* Read in more data. */
1239*287e80b3SSadaf Ebrahimi 		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1240*287e80b3SSadaf Ebrahimi 			yyg->yy_n_chars, num_to_read );
1241*287e80b3SSadaf Ebrahimi 
1242*287e80b3SSadaf Ebrahimi 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
1243*287e80b3SSadaf Ebrahimi 		}
1244*287e80b3SSadaf Ebrahimi 
1245*287e80b3SSadaf Ebrahimi 	if ( yyg->yy_n_chars == 0 )
1246*287e80b3SSadaf Ebrahimi 		{
1247*287e80b3SSadaf Ebrahimi 		if ( number_to_move == YY_MORE_ADJ )
1248*287e80b3SSadaf Ebrahimi 			{
1249*287e80b3SSadaf Ebrahimi 			ret_val = EOB_ACT_END_OF_FILE;
1250*287e80b3SSadaf Ebrahimi 			yyrestart( yyin  , yyscanner);
1251*287e80b3SSadaf Ebrahimi 			}
1252*287e80b3SSadaf Ebrahimi 
1253*287e80b3SSadaf Ebrahimi 		else
1254*287e80b3SSadaf Ebrahimi 			{
1255*287e80b3SSadaf Ebrahimi 			ret_val = EOB_ACT_LAST_MATCH;
1256*287e80b3SSadaf Ebrahimi 			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
1257*287e80b3SSadaf Ebrahimi 				YY_BUFFER_EOF_PENDING;
1258*287e80b3SSadaf Ebrahimi 			}
1259*287e80b3SSadaf Ebrahimi 		}
1260*287e80b3SSadaf Ebrahimi 
1261*287e80b3SSadaf Ebrahimi 	else
1262*287e80b3SSadaf Ebrahimi 		ret_val = EOB_ACT_CONTINUE_SCAN;
1263*287e80b3SSadaf Ebrahimi 
1264*287e80b3SSadaf Ebrahimi 	if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
1265*287e80b3SSadaf Ebrahimi 		/* Extend the array by 50%, plus the number we really need. */
1266*287e80b3SSadaf Ebrahimi 		int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
1267*287e80b3SSadaf Ebrahimi 		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
1268*287e80b3SSadaf Ebrahimi 			(void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner );
1269*287e80b3SSadaf Ebrahimi 		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1270*287e80b3SSadaf Ebrahimi 			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
1271*287e80b3SSadaf Ebrahimi 		/* "- 2" to take care of EOB's */
1272*287e80b3SSadaf Ebrahimi 		YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
1273*287e80b3SSadaf Ebrahimi 	}
1274*287e80b3SSadaf Ebrahimi 
1275*287e80b3SSadaf Ebrahimi 	yyg->yy_n_chars += number_to_move;
1276*287e80b3SSadaf Ebrahimi 	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1277*287e80b3SSadaf Ebrahimi 	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1278*287e80b3SSadaf Ebrahimi 
1279*287e80b3SSadaf Ebrahimi 	yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
1280*287e80b3SSadaf Ebrahimi 
1281*287e80b3SSadaf Ebrahimi 	return ret_val;
1282*287e80b3SSadaf Ebrahimi }
1283*287e80b3SSadaf Ebrahimi 
1284*287e80b3SSadaf Ebrahimi /* yy_get_previous_state - get the state just before the EOB char was reached */
1285*287e80b3SSadaf Ebrahimi 
yy_get_previous_state(yyscan_t yyscanner)1286*287e80b3SSadaf Ebrahimi     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
1287*287e80b3SSadaf Ebrahimi {
1288*287e80b3SSadaf Ebrahimi 	yy_state_type yy_current_state;
1289*287e80b3SSadaf Ebrahimi 	char *yy_cp;
1290*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1291*287e80b3SSadaf Ebrahimi 
1292*287e80b3SSadaf Ebrahimi 	yy_current_state = yyg->yy_start;
1293*287e80b3SSadaf Ebrahimi 
1294*287e80b3SSadaf Ebrahimi 	for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
1295*287e80b3SSadaf Ebrahimi 		{
1296*287e80b3SSadaf Ebrahimi 		YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1297*287e80b3SSadaf Ebrahimi 		if ( yy_accept[yy_current_state] )
1298*287e80b3SSadaf Ebrahimi 			{
1299*287e80b3SSadaf Ebrahimi 			yyg->yy_last_accepting_state = yy_current_state;
1300*287e80b3SSadaf Ebrahimi 			yyg->yy_last_accepting_cpos = yy_cp;
1301*287e80b3SSadaf Ebrahimi 			}
1302*287e80b3SSadaf Ebrahimi 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1303*287e80b3SSadaf Ebrahimi 			{
1304*287e80b3SSadaf Ebrahimi 			yy_current_state = (int) yy_def[yy_current_state];
1305*287e80b3SSadaf Ebrahimi 			if ( yy_current_state >= 72 )
1306*287e80b3SSadaf Ebrahimi 				yy_c = yy_meta[yy_c];
1307*287e80b3SSadaf Ebrahimi 			}
1308*287e80b3SSadaf Ebrahimi 		yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
1309*287e80b3SSadaf Ebrahimi 		}
1310*287e80b3SSadaf Ebrahimi 
1311*287e80b3SSadaf Ebrahimi 	return yy_current_state;
1312*287e80b3SSadaf Ebrahimi }
1313*287e80b3SSadaf Ebrahimi 
1314*287e80b3SSadaf Ebrahimi /* yy_try_NUL_trans - try to make a transition on the NUL character
1315*287e80b3SSadaf Ebrahimi  *
1316*287e80b3SSadaf Ebrahimi  * synopsis
1317*287e80b3SSadaf Ebrahimi  *	next_state = yy_try_NUL_trans( current_state );
1318*287e80b3SSadaf Ebrahimi  */
yy_try_NUL_trans(yy_state_type yy_current_state,yyscan_t yyscanner)1319*287e80b3SSadaf Ebrahimi     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
1320*287e80b3SSadaf Ebrahimi {
1321*287e80b3SSadaf Ebrahimi 	int yy_is_jam;
1322*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
1323*287e80b3SSadaf Ebrahimi 	char *yy_cp = yyg->yy_c_buf_p;
1324*287e80b3SSadaf Ebrahimi 
1325*287e80b3SSadaf Ebrahimi 	YY_CHAR yy_c = 1;
1326*287e80b3SSadaf Ebrahimi 	if ( yy_accept[yy_current_state] )
1327*287e80b3SSadaf Ebrahimi 		{
1328*287e80b3SSadaf Ebrahimi 		yyg->yy_last_accepting_state = yy_current_state;
1329*287e80b3SSadaf Ebrahimi 		yyg->yy_last_accepting_cpos = yy_cp;
1330*287e80b3SSadaf Ebrahimi 		}
1331*287e80b3SSadaf Ebrahimi 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1332*287e80b3SSadaf Ebrahimi 		{
1333*287e80b3SSadaf Ebrahimi 		yy_current_state = (int) yy_def[yy_current_state];
1334*287e80b3SSadaf Ebrahimi 		if ( yy_current_state >= 72 )
1335*287e80b3SSadaf Ebrahimi 			yy_c = yy_meta[yy_c];
1336*287e80b3SSadaf Ebrahimi 		}
1337*287e80b3SSadaf Ebrahimi 	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
1338*287e80b3SSadaf Ebrahimi 	yy_is_jam = (yy_current_state == 71);
1339*287e80b3SSadaf Ebrahimi 
1340*287e80b3SSadaf Ebrahimi 	(void)yyg;
1341*287e80b3SSadaf Ebrahimi 	return yy_is_jam ? 0 : yy_current_state;
1342*287e80b3SSadaf Ebrahimi }
1343*287e80b3SSadaf Ebrahimi 
1344*287e80b3SSadaf Ebrahimi #ifndef YY_NO_UNPUT
1345*287e80b3SSadaf Ebrahimi 
yyunput(int c,char * yy_bp,yyscan_t yyscanner)1346*287e80b3SSadaf Ebrahimi     static void yyunput (int c, char * yy_bp , yyscan_t yyscanner)
1347*287e80b3SSadaf Ebrahimi {
1348*287e80b3SSadaf Ebrahimi 	char *yy_cp;
1349*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1350*287e80b3SSadaf Ebrahimi 
1351*287e80b3SSadaf Ebrahimi     yy_cp = yyg->yy_c_buf_p;
1352*287e80b3SSadaf Ebrahimi 
1353*287e80b3SSadaf Ebrahimi 	/* undo effects of setting up yytext */
1354*287e80b3SSadaf Ebrahimi 	*yy_cp = yyg->yy_hold_char;
1355*287e80b3SSadaf Ebrahimi 
1356*287e80b3SSadaf Ebrahimi 	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1357*287e80b3SSadaf Ebrahimi 		{ /* need to shift things up to make room */
1358*287e80b3SSadaf Ebrahimi 		/* +2 for EOB chars. */
1359*287e80b3SSadaf Ebrahimi 		int number_to_move = yyg->yy_n_chars + 2;
1360*287e80b3SSadaf Ebrahimi 		char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
1361*287e80b3SSadaf Ebrahimi 					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
1362*287e80b3SSadaf Ebrahimi 		char *source =
1363*287e80b3SSadaf Ebrahimi 				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
1364*287e80b3SSadaf Ebrahimi 
1365*287e80b3SSadaf Ebrahimi 		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1366*287e80b3SSadaf Ebrahimi 			*--dest = *--source;
1367*287e80b3SSadaf Ebrahimi 
1368*287e80b3SSadaf Ebrahimi 		yy_cp += (int) (dest - source);
1369*287e80b3SSadaf Ebrahimi 		yy_bp += (int) (dest - source);
1370*287e80b3SSadaf Ebrahimi 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
1371*287e80b3SSadaf Ebrahimi 			yyg->yy_n_chars = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
1372*287e80b3SSadaf Ebrahimi 
1373*287e80b3SSadaf Ebrahimi 		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1374*287e80b3SSadaf Ebrahimi 			YY_FATAL_ERROR( "flex scanner push-back overflow" );
1375*287e80b3SSadaf Ebrahimi 		}
1376*287e80b3SSadaf Ebrahimi 
1377*287e80b3SSadaf Ebrahimi 	*--yy_cp = (char) c;
1378*287e80b3SSadaf Ebrahimi 
1379*287e80b3SSadaf Ebrahimi 	yyg->yytext_ptr = yy_bp;
1380*287e80b3SSadaf Ebrahimi 	yyg->yy_hold_char = *yy_cp;
1381*287e80b3SSadaf Ebrahimi 	yyg->yy_c_buf_p = yy_cp;
1382*287e80b3SSadaf Ebrahimi }
1383*287e80b3SSadaf Ebrahimi 
1384*287e80b3SSadaf Ebrahimi #endif
1385*287e80b3SSadaf Ebrahimi 
1386*287e80b3SSadaf Ebrahimi #ifndef YY_NO_INPUT
1387*287e80b3SSadaf Ebrahimi #ifdef __cplusplus
yyinput(yyscan_t yyscanner)1388*287e80b3SSadaf Ebrahimi     static int yyinput (yyscan_t yyscanner)
1389*287e80b3SSadaf Ebrahimi #else
1390*287e80b3SSadaf Ebrahimi     static int input  (yyscan_t yyscanner)
1391*287e80b3SSadaf Ebrahimi #endif
1392*287e80b3SSadaf Ebrahimi 
1393*287e80b3SSadaf Ebrahimi {
1394*287e80b3SSadaf Ebrahimi 	int c;
1395*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1396*287e80b3SSadaf Ebrahimi 
1397*287e80b3SSadaf Ebrahimi 	*yyg->yy_c_buf_p = yyg->yy_hold_char;
1398*287e80b3SSadaf Ebrahimi 
1399*287e80b3SSadaf Ebrahimi 	if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
1400*287e80b3SSadaf Ebrahimi 		{
1401*287e80b3SSadaf Ebrahimi 		/* yy_c_buf_p now points to the character we want to return.
1402*287e80b3SSadaf Ebrahimi 		 * If this occurs *before* the EOB characters, then it's a
1403*287e80b3SSadaf Ebrahimi 		 * valid NUL; if not, then we've hit the end of the buffer.
1404*287e80b3SSadaf Ebrahimi 		 */
1405*287e80b3SSadaf Ebrahimi 		if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
1406*287e80b3SSadaf Ebrahimi 			/* This was really a NUL. */
1407*287e80b3SSadaf Ebrahimi 			*yyg->yy_c_buf_p = '\0';
1408*287e80b3SSadaf Ebrahimi 
1409*287e80b3SSadaf Ebrahimi 		else
1410*287e80b3SSadaf Ebrahimi 			{ /* need more input */
1411*287e80b3SSadaf Ebrahimi 			int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr);
1412*287e80b3SSadaf Ebrahimi 			++yyg->yy_c_buf_p;
1413*287e80b3SSadaf Ebrahimi 
1414*287e80b3SSadaf Ebrahimi 			switch ( yy_get_next_buffer( yyscanner ) )
1415*287e80b3SSadaf Ebrahimi 				{
1416*287e80b3SSadaf Ebrahimi 				case EOB_ACT_LAST_MATCH:
1417*287e80b3SSadaf Ebrahimi 					/* This happens because yy_g_n_b()
1418*287e80b3SSadaf Ebrahimi 					 * sees that we've accumulated a
1419*287e80b3SSadaf Ebrahimi 					 * token and flags that we need to
1420*287e80b3SSadaf Ebrahimi 					 * try matching the token before
1421*287e80b3SSadaf Ebrahimi 					 * proceeding.  But for input(),
1422*287e80b3SSadaf Ebrahimi 					 * there's no matching to consider.
1423*287e80b3SSadaf Ebrahimi 					 * So convert the EOB_ACT_LAST_MATCH
1424*287e80b3SSadaf Ebrahimi 					 * to EOB_ACT_END_OF_FILE.
1425*287e80b3SSadaf Ebrahimi 					 */
1426*287e80b3SSadaf Ebrahimi 
1427*287e80b3SSadaf Ebrahimi 					/* Reset buffer status. */
1428*287e80b3SSadaf Ebrahimi 					yyrestart( yyin , yyscanner);
1429*287e80b3SSadaf Ebrahimi 
1430*287e80b3SSadaf Ebrahimi 					/*FALLTHROUGH*/
1431*287e80b3SSadaf Ebrahimi 
1432*287e80b3SSadaf Ebrahimi 				case EOB_ACT_END_OF_FILE:
1433*287e80b3SSadaf Ebrahimi 					{
1434*287e80b3SSadaf Ebrahimi 					if ( yywrap( yyscanner ) )
1435*287e80b3SSadaf Ebrahimi 						return 0;
1436*287e80b3SSadaf Ebrahimi 
1437*287e80b3SSadaf Ebrahimi 					if ( ! yyg->yy_did_buffer_switch_on_eof )
1438*287e80b3SSadaf Ebrahimi 						YY_NEW_FILE;
1439*287e80b3SSadaf Ebrahimi #ifdef __cplusplus
1440*287e80b3SSadaf Ebrahimi 					return yyinput(yyscanner);
1441*287e80b3SSadaf Ebrahimi #else
1442*287e80b3SSadaf Ebrahimi 					return input(yyscanner);
1443*287e80b3SSadaf Ebrahimi #endif
1444*287e80b3SSadaf Ebrahimi 					}
1445*287e80b3SSadaf Ebrahimi 
1446*287e80b3SSadaf Ebrahimi 				case EOB_ACT_CONTINUE_SCAN:
1447*287e80b3SSadaf Ebrahimi 					yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
1448*287e80b3SSadaf Ebrahimi 					break;
1449*287e80b3SSadaf Ebrahimi 				}
1450*287e80b3SSadaf Ebrahimi 			}
1451*287e80b3SSadaf Ebrahimi 		}
1452*287e80b3SSadaf Ebrahimi 
1453*287e80b3SSadaf Ebrahimi 	c = *(unsigned char *) yyg->yy_c_buf_p;	/* cast for 8-bit char's */
1454*287e80b3SSadaf Ebrahimi 	*yyg->yy_c_buf_p = '\0';	/* preserve yytext */
1455*287e80b3SSadaf Ebrahimi 	yyg->yy_hold_char = *++yyg->yy_c_buf_p;
1456*287e80b3SSadaf Ebrahimi 
1457*287e80b3SSadaf Ebrahimi 	return c;
1458*287e80b3SSadaf Ebrahimi }
1459*287e80b3SSadaf Ebrahimi #endif	/* ifndef YY_NO_INPUT */
1460*287e80b3SSadaf Ebrahimi 
1461*287e80b3SSadaf Ebrahimi /** Immediately switch to a different input stream.
1462*287e80b3SSadaf Ebrahimi  * @param input_file A readable stream.
1463*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1464*287e80b3SSadaf Ebrahimi  * @note This function does not reset the start condition to @c INITIAL .
1465*287e80b3SSadaf Ebrahimi  */
yyrestart(FILE * input_file,yyscan_t yyscanner)1466*287e80b3SSadaf Ebrahimi     void yyrestart  (FILE * input_file , yyscan_t yyscanner)
1467*287e80b3SSadaf Ebrahimi {
1468*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1469*287e80b3SSadaf Ebrahimi 
1470*287e80b3SSadaf Ebrahimi 	if ( ! YY_CURRENT_BUFFER ){
1471*287e80b3SSadaf Ebrahimi         yyensure_buffer_stack (yyscanner);
1472*287e80b3SSadaf Ebrahimi 		YY_CURRENT_BUFFER_LVALUE =
1473*287e80b3SSadaf Ebrahimi             yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
1474*287e80b3SSadaf Ebrahimi 	}
1475*287e80b3SSadaf Ebrahimi 
1476*287e80b3SSadaf Ebrahimi 	yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner);
1477*287e80b3SSadaf Ebrahimi 	yy_load_buffer_state( yyscanner );
1478*287e80b3SSadaf Ebrahimi }
1479*287e80b3SSadaf Ebrahimi 
1480*287e80b3SSadaf Ebrahimi /** Switch to a different input buffer.
1481*287e80b3SSadaf Ebrahimi  * @param new_buffer The new input buffer.
1482*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1483*287e80b3SSadaf Ebrahimi  */
yy_switch_to_buffer(YY_BUFFER_STATE new_buffer,yyscan_t yyscanner)1484*287e80b3SSadaf Ebrahimi     void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
1485*287e80b3SSadaf Ebrahimi {
1486*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1487*287e80b3SSadaf Ebrahimi 
1488*287e80b3SSadaf Ebrahimi 	/* TODO. We should be able to replace this entire function body
1489*287e80b3SSadaf Ebrahimi 	 * with
1490*287e80b3SSadaf Ebrahimi 	 *		yypop_buffer_state();
1491*287e80b3SSadaf Ebrahimi 	 *		yypush_buffer_state(new_buffer);
1492*287e80b3SSadaf Ebrahimi      */
1493*287e80b3SSadaf Ebrahimi 	yyensure_buffer_stack (yyscanner);
1494*287e80b3SSadaf Ebrahimi 	if ( YY_CURRENT_BUFFER == new_buffer )
1495*287e80b3SSadaf Ebrahimi 		return;
1496*287e80b3SSadaf Ebrahimi 
1497*287e80b3SSadaf Ebrahimi 	if ( YY_CURRENT_BUFFER )
1498*287e80b3SSadaf Ebrahimi 		{
1499*287e80b3SSadaf Ebrahimi 		/* Flush out information for old buffer. */
1500*287e80b3SSadaf Ebrahimi 		*yyg->yy_c_buf_p = yyg->yy_hold_char;
1501*287e80b3SSadaf Ebrahimi 		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
1502*287e80b3SSadaf Ebrahimi 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
1503*287e80b3SSadaf Ebrahimi 		}
1504*287e80b3SSadaf Ebrahimi 
1505*287e80b3SSadaf Ebrahimi 	YY_CURRENT_BUFFER_LVALUE = new_buffer;
1506*287e80b3SSadaf Ebrahimi 	yy_load_buffer_state( yyscanner );
1507*287e80b3SSadaf Ebrahimi 
1508*287e80b3SSadaf Ebrahimi 	/* We don't actually know whether we did this switch during
1509*287e80b3SSadaf Ebrahimi 	 * EOF (yywrap()) processing, but the only time this flag
1510*287e80b3SSadaf Ebrahimi 	 * is looked at is after yywrap() is called, so it's safe
1511*287e80b3SSadaf Ebrahimi 	 * to go ahead and always set it.
1512*287e80b3SSadaf Ebrahimi 	 */
1513*287e80b3SSadaf Ebrahimi 	yyg->yy_did_buffer_switch_on_eof = 1;
1514*287e80b3SSadaf Ebrahimi }
1515*287e80b3SSadaf Ebrahimi 
yy_load_buffer_state(yyscan_t yyscanner)1516*287e80b3SSadaf Ebrahimi static void yy_load_buffer_state  (yyscan_t yyscanner)
1517*287e80b3SSadaf Ebrahimi {
1518*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1519*287e80b3SSadaf Ebrahimi 	yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1520*287e80b3SSadaf Ebrahimi 	yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
1521*287e80b3SSadaf Ebrahimi 	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
1522*287e80b3SSadaf Ebrahimi 	yyg->yy_hold_char = *yyg->yy_c_buf_p;
1523*287e80b3SSadaf Ebrahimi }
1524*287e80b3SSadaf Ebrahimi 
1525*287e80b3SSadaf Ebrahimi /** Allocate and initialize an input buffer state.
1526*287e80b3SSadaf Ebrahimi  * @param file A readable stream.
1527*287e80b3SSadaf Ebrahimi  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
1528*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1529*287e80b3SSadaf Ebrahimi  * @return the allocated buffer state.
1530*287e80b3SSadaf Ebrahimi  */
yy_create_buffer(FILE * file,int size,yyscan_t yyscanner)1531*287e80b3SSadaf Ebrahimi     YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
1532*287e80b3SSadaf Ebrahimi {
1533*287e80b3SSadaf Ebrahimi 	YY_BUFFER_STATE b;
1534*287e80b3SSadaf Ebrahimi 
1535*287e80b3SSadaf Ebrahimi 	b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
1536*287e80b3SSadaf Ebrahimi 	if ( ! b )
1537*287e80b3SSadaf Ebrahimi 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1538*287e80b3SSadaf Ebrahimi 
1539*287e80b3SSadaf Ebrahimi 	b->yy_buf_size = size;
1540*287e80b3SSadaf Ebrahimi 
1541*287e80b3SSadaf Ebrahimi 	/* yy_ch_buf has to be 2 characters longer than the size given because
1542*287e80b3SSadaf Ebrahimi 	 * we need to put in 2 end-of-buffer characters.
1543*287e80b3SSadaf Ebrahimi 	 */
1544*287e80b3SSadaf Ebrahimi 	b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
1545*287e80b3SSadaf Ebrahimi 	if ( ! b->yy_ch_buf )
1546*287e80b3SSadaf Ebrahimi 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1547*287e80b3SSadaf Ebrahimi 
1548*287e80b3SSadaf Ebrahimi 	b->yy_is_our_buffer = 1;
1549*287e80b3SSadaf Ebrahimi 
1550*287e80b3SSadaf Ebrahimi 	yy_init_buffer( b, file , yyscanner);
1551*287e80b3SSadaf Ebrahimi 
1552*287e80b3SSadaf Ebrahimi 	return b;
1553*287e80b3SSadaf Ebrahimi }
1554*287e80b3SSadaf Ebrahimi 
1555*287e80b3SSadaf Ebrahimi /** Destroy the buffer.
1556*287e80b3SSadaf Ebrahimi  * @param b a buffer created with yy_create_buffer()
1557*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1558*287e80b3SSadaf Ebrahimi  */
yy_delete_buffer(YY_BUFFER_STATE b,yyscan_t yyscanner)1559*287e80b3SSadaf Ebrahimi     void yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
1560*287e80b3SSadaf Ebrahimi {
1561*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1562*287e80b3SSadaf Ebrahimi 
1563*287e80b3SSadaf Ebrahimi 	if ( ! b )
1564*287e80b3SSadaf Ebrahimi 		return;
1565*287e80b3SSadaf Ebrahimi 
1566*287e80b3SSadaf Ebrahimi 	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
1567*287e80b3SSadaf Ebrahimi 		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
1568*287e80b3SSadaf Ebrahimi 
1569*287e80b3SSadaf Ebrahimi 	if ( b->yy_is_our_buffer )
1570*287e80b3SSadaf Ebrahimi 		yyfree( (void *) b->yy_ch_buf , yyscanner );
1571*287e80b3SSadaf Ebrahimi 
1572*287e80b3SSadaf Ebrahimi 	yyfree( (void *) b , yyscanner );
1573*287e80b3SSadaf Ebrahimi }
1574*287e80b3SSadaf Ebrahimi 
1575*287e80b3SSadaf Ebrahimi /* Initializes or reinitializes a buffer.
1576*287e80b3SSadaf Ebrahimi  * This function is sometimes called more than once on the same buffer,
1577*287e80b3SSadaf Ebrahimi  * such as during a yyrestart() or at EOF.
1578*287e80b3SSadaf Ebrahimi  */
yy_init_buffer(YY_BUFFER_STATE b,FILE * file,yyscan_t yyscanner)1579*287e80b3SSadaf Ebrahimi     static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
1580*287e80b3SSadaf Ebrahimi 
1581*287e80b3SSadaf Ebrahimi {
1582*287e80b3SSadaf Ebrahimi 	int oerrno = errno;
1583*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1584*287e80b3SSadaf Ebrahimi 
1585*287e80b3SSadaf Ebrahimi 	yy_flush_buffer( b , yyscanner);
1586*287e80b3SSadaf Ebrahimi 
1587*287e80b3SSadaf Ebrahimi 	b->yy_input_file = file;
1588*287e80b3SSadaf Ebrahimi 	b->yy_fill_buffer = 1;
1589*287e80b3SSadaf Ebrahimi 
1590*287e80b3SSadaf Ebrahimi     /* If b is the current buffer, then yy_init_buffer was _probably_
1591*287e80b3SSadaf Ebrahimi      * called from yyrestart() or through yy_get_next_buffer.
1592*287e80b3SSadaf Ebrahimi      * In that case, we don't want to reset the lineno or column.
1593*287e80b3SSadaf Ebrahimi      */
1594*287e80b3SSadaf Ebrahimi     if (b != YY_CURRENT_BUFFER){
1595*287e80b3SSadaf Ebrahimi         b->yy_bs_lineno = 1;
1596*287e80b3SSadaf Ebrahimi         b->yy_bs_column = 0;
1597*287e80b3SSadaf Ebrahimi     }
1598*287e80b3SSadaf Ebrahimi 
1599*287e80b3SSadaf Ebrahimi         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
1600*287e80b3SSadaf Ebrahimi 
1601*287e80b3SSadaf Ebrahimi 	errno = oerrno;
1602*287e80b3SSadaf Ebrahimi }
1603*287e80b3SSadaf Ebrahimi 
1604*287e80b3SSadaf Ebrahimi /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
1605*287e80b3SSadaf Ebrahimi  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
1606*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1607*287e80b3SSadaf Ebrahimi  */
yy_flush_buffer(YY_BUFFER_STATE b,yyscan_t yyscanner)1608*287e80b3SSadaf Ebrahimi     void yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
1609*287e80b3SSadaf Ebrahimi {
1610*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1611*287e80b3SSadaf Ebrahimi 	if ( ! b )
1612*287e80b3SSadaf Ebrahimi 		return;
1613*287e80b3SSadaf Ebrahimi 
1614*287e80b3SSadaf Ebrahimi 	b->yy_n_chars = 0;
1615*287e80b3SSadaf Ebrahimi 
1616*287e80b3SSadaf Ebrahimi 	/* We always need two end-of-buffer characters.  The first causes
1617*287e80b3SSadaf Ebrahimi 	 * a transition to the end-of-buffer state.  The second causes
1618*287e80b3SSadaf Ebrahimi 	 * a jam in that state.
1619*287e80b3SSadaf Ebrahimi 	 */
1620*287e80b3SSadaf Ebrahimi 	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
1621*287e80b3SSadaf Ebrahimi 	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
1622*287e80b3SSadaf Ebrahimi 
1623*287e80b3SSadaf Ebrahimi 	b->yy_buf_pos = &b->yy_ch_buf[0];
1624*287e80b3SSadaf Ebrahimi 
1625*287e80b3SSadaf Ebrahimi 	b->yy_at_bol = 1;
1626*287e80b3SSadaf Ebrahimi 	b->yy_buffer_status = YY_BUFFER_NEW;
1627*287e80b3SSadaf Ebrahimi 
1628*287e80b3SSadaf Ebrahimi 	if ( b == YY_CURRENT_BUFFER )
1629*287e80b3SSadaf Ebrahimi 		yy_load_buffer_state( yyscanner );
1630*287e80b3SSadaf Ebrahimi }
1631*287e80b3SSadaf Ebrahimi 
1632*287e80b3SSadaf Ebrahimi /** Pushes the new state onto the stack. The new state becomes
1633*287e80b3SSadaf Ebrahimi  *  the current state. This function will allocate the stack
1634*287e80b3SSadaf Ebrahimi  *  if necessary.
1635*287e80b3SSadaf Ebrahimi  *  @param new_buffer The new state.
1636*287e80b3SSadaf Ebrahimi  *  @param yyscanner The scanner object.
1637*287e80b3SSadaf Ebrahimi  */
yypush_buffer_state(YY_BUFFER_STATE new_buffer,yyscan_t yyscanner)1638*287e80b3SSadaf Ebrahimi void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
1639*287e80b3SSadaf Ebrahimi {
1640*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1641*287e80b3SSadaf Ebrahimi 	if (new_buffer == NULL)
1642*287e80b3SSadaf Ebrahimi 		return;
1643*287e80b3SSadaf Ebrahimi 
1644*287e80b3SSadaf Ebrahimi 	yyensure_buffer_stack(yyscanner);
1645*287e80b3SSadaf Ebrahimi 
1646*287e80b3SSadaf Ebrahimi 	/* This block is copied from yy_switch_to_buffer. */
1647*287e80b3SSadaf Ebrahimi 	if ( YY_CURRENT_BUFFER )
1648*287e80b3SSadaf Ebrahimi 		{
1649*287e80b3SSadaf Ebrahimi 		/* Flush out information for old buffer. */
1650*287e80b3SSadaf Ebrahimi 		*yyg->yy_c_buf_p = yyg->yy_hold_char;
1651*287e80b3SSadaf Ebrahimi 		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
1652*287e80b3SSadaf Ebrahimi 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
1653*287e80b3SSadaf Ebrahimi 		}
1654*287e80b3SSadaf Ebrahimi 
1655*287e80b3SSadaf Ebrahimi 	/* Only push if top exists. Otherwise, replace top. */
1656*287e80b3SSadaf Ebrahimi 	if (YY_CURRENT_BUFFER)
1657*287e80b3SSadaf Ebrahimi 		yyg->yy_buffer_stack_top++;
1658*287e80b3SSadaf Ebrahimi 	YY_CURRENT_BUFFER_LVALUE = new_buffer;
1659*287e80b3SSadaf Ebrahimi 
1660*287e80b3SSadaf Ebrahimi 	/* copied from yy_switch_to_buffer. */
1661*287e80b3SSadaf Ebrahimi 	yy_load_buffer_state( yyscanner );
1662*287e80b3SSadaf Ebrahimi 	yyg->yy_did_buffer_switch_on_eof = 1;
1663*287e80b3SSadaf Ebrahimi }
1664*287e80b3SSadaf Ebrahimi 
1665*287e80b3SSadaf Ebrahimi /** Removes and deletes the top of the stack, if present.
1666*287e80b3SSadaf Ebrahimi  *  The next element becomes the new top.
1667*287e80b3SSadaf Ebrahimi  *  @param yyscanner The scanner object.
1668*287e80b3SSadaf Ebrahimi  */
yypop_buffer_state(yyscan_t yyscanner)1669*287e80b3SSadaf Ebrahimi void yypop_buffer_state (yyscan_t yyscanner)
1670*287e80b3SSadaf Ebrahimi {
1671*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1672*287e80b3SSadaf Ebrahimi 	if (!YY_CURRENT_BUFFER)
1673*287e80b3SSadaf Ebrahimi 		return;
1674*287e80b3SSadaf Ebrahimi 
1675*287e80b3SSadaf Ebrahimi 	yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner);
1676*287e80b3SSadaf Ebrahimi 	YY_CURRENT_BUFFER_LVALUE = NULL;
1677*287e80b3SSadaf Ebrahimi 	if (yyg->yy_buffer_stack_top > 0)
1678*287e80b3SSadaf Ebrahimi 		--yyg->yy_buffer_stack_top;
1679*287e80b3SSadaf Ebrahimi 
1680*287e80b3SSadaf Ebrahimi 	if (YY_CURRENT_BUFFER) {
1681*287e80b3SSadaf Ebrahimi 		yy_load_buffer_state( yyscanner );
1682*287e80b3SSadaf Ebrahimi 		yyg->yy_did_buffer_switch_on_eof = 1;
1683*287e80b3SSadaf Ebrahimi 	}
1684*287e80b3SSadaf Ebrahimi }
1685*287e80b3SSadaf Ebrahimi 
1686*287e80b3SSadaf Ebrahimi /* Allocates the stack if it does not exist.
1687*287e80b3SSadaf Ebrahimi  *  Guarantees space for at least one push.
1688*287e80b3SSadaf Ebrahimi  */
yyensure_buffer_stack(yyscan_t yyscanner)1689*287e80b3SSadaf Ebrahimi static void yyensure_buffer_stack (yyscan_t yyscanner)
1690*287e80b3SSadaf Ebrahimi {
1691*287e80b3SSadaf Ebrahimi 	yy_size_t num_to_alloc;
1692*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1693*287e80b3SSadaf Ebrahimi 
1694*287e80b3SSadaf Ebrahimi 	if (!yyg->yy_buffer_stack) {
1695*287e80b3SSadaf Ebrahimi 
1696*287e80b3SSadaf Ebrahimi 		/* First allocation is just for 2 elements, since we don't know if this
1697*287e80b3SSadaf Ebrahimi 		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
1698*287e80b3SSadaf Ebrahimi 		 * immediate realloc on the next call.
1699*287e80b3SSadaf Ebrahimi          */
1700*287e80b3SSadaf Ebrahimi       num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
1701*287e80b3SSadaf Ebrahimi 		yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
1702*287e80b3SSadaf Ebrahimi 								(num_to_alloc * sizeof(struct yy_buffer_state*)
1703*287e80b3SSadaf Ebrahimi 								, yyscanner);
1704*287e80b3SSadaf Ebrahimi 		if ( ! yyg->yy_buffer_stack )
1705*287e80b3SSadaf Ebrahimi 			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
1706*287e80b3SSadaf Ebrahimi 
1707*287e80b3SSadaf Ebrahimi 		memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
1708*287e80b3SSadaf Ebrahimi 
1709*287e80b3SSadaf Ebrahimi 		yyg->yy_buffer_stack_max = num_to_alloc;
1710*287e80b3SSadaf Ebrahimi 		yyg->yy_buffer_stack_top = 0;
1711*287e80b3SSadaf Ebrahimi 		return;
1712*287e80b3SSadaf Ebrahimi 	}
1713*287e80b3SSadaf Ebrahimi 
1714*287e80b3SSadaf Ebrahimi 	if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
1715*287e80b3SSadaf Ebrahimi 
1716*287e80b3SSadaf Ebrahimi 		/* Increase the buffer to prepare for a possible push. */
1717*287e80b3SSadaf Ebrahimi 		yy_size_t grow_size = 8 /* arbitrary grow size */;
1718*287e80b3SSadaf Ebrahimi 
1719*287e80b3SSadaf Ebrahimi 		num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
1720*287e80b3SSadaf Ebrahimi 		yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
1721*287e80b3SSadaf Ebrahimi 								(yyg->yy_buffer_stack,
1722*287e80b3SSadaf Ebrahimi 								num_to_alloc * sizeof(struct yy_buffer_state*)
1723*287e80b3SSadaf Ebrahimi 								, yyscanner);
1724*287e80b3SSadaf Ebrahimi 		if ( ! yyg->yy_buffer_stack )
1725*287e80b3SSadaf Ebrahimi 			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
1726*287e80b3SSadaf Ebrahimi 
1727*287e80b3SSadaf Ebrahimi 		/* zero only the new slots.*/
1728*287e80b3SSadaf Ebrahimi 		memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
1729*287e80b3SSadaf Ebrahimi 		yyg->yy_buffer_stack_max = num_to_alloc;
1730*287e80b3SSadaf Ebrahimi 	}
1731*287e80b3SSadaf Ebrahimi }
1732*287e80b3SSadaf Ebrahimi 
1733*287e80b3SSadaf Ebrahimi /** Setup the input buffer state to scan directly from a user-specified character buffer.
1734*287e80b3SSadaf Ebrahimi  * @param base the character buffer
1735*287e80b3SSadaf Ebrahimi  * @param size the size in bytes of the character buffer
1736*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1737*287e80b3SSadaf Ebrahimi  * @return the newly allocated buffer state object.
1738*287e80b3SSadaf Ebrahimi  */
yy_scan_buffer(char * base,yy_size_t size,yyscan_t yyscanner)1739*287e80b3SSadaf Ebrahimi YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
1740*287e80b3SSadaf Ebrahimi {
1741*287e80b3SSadaf Ebrahimi 	YY_BUFFER_STATE b;
1742*287e80b3SSadaf Ebrahimi 
1743*287e80b3SSadaf Ebrahimi 	if ( size < 2 ||
1744*287e80b3SSadaf Ebrahimi 	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
1745*287e80b3SSadaf Ebrahimi 	     base[size-1] != YY_END_OF_BUFFER_CHAR )
1746*287e80b3SSadaf Ebrahimi 		/* They forgot to leave room for the EOB's. */
1747*287e80b3SSadaf Ebrahimi 		return NULL;
1748*287e80b3SSadaf Ebrahimi 
1749*287e80b3SSadaf Ebrahimi 	b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
1750*287e80b3SSadaf Ebrahimi 	if ( ! b )
1751*287e80b3SSadaf Ebrahimi 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
1752*287e80b3SSadaf Ebrahimi 
1753*287e80b3SSadaf Ebrahimi 	b->yy_buf_size = (int) (size - 2);	/* "- 2" to take care of EOB's */
1754*287e80b3SSadaf Ebrahimi 	b->yy_buf_pos = b->yy_ch_buf = base;
1755*287e80b3SSadaf Ebrahimi 	b->yy_is_our_buffer = 0;
1756*287e80b3SSadaf Ebrahimi 	b->yy_input_file = NULL;
1757*287e80b3SSadaf Ebrahimi 	b->yy_n_chars = b->yy_buf_size;
1758*287e80b3SSadaf Ebrahimi 	b->yy_is_interactive = 0;
1759*287e80b3SSadaf Ebrahimi 	b->yy_at_bol = 1;
1760*287e80b3SSadaf Ebrahimi 	b->yy_fill_buffer = 0;
1761*287e80b3SSadaf Ebrahimi 	b->yy_buffer_status = YY_BUFFER_NEW;
1762*287e80b3SSadaf Ebrahimi 
1763*287e80b3SSadaf Ebrahimi 	yy_switch_to_buffer( b , yyscanner );
1764*287e80b3SSadaf Ebrahimi 
1765*287e80b3SSadaf Ebrahimi 	return b;
1766*287e80b3SSadaf Ebrahimi }
1767*287e80b3SSadaf Ebrahimi 
1768*287e80b3SSadaf Ebrahimi /** Setup the input buffer state to scan a string. The next call to yylex() will
1769*287e80b3SSadaf Ebrahimi  * scan from a @e copy of @a str.
1770*287e80b3SSadaf Ebrahimi  * @param yystr a NUL-terminated string to scan
1771*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1772*287e80b3SSadaf Ebrahimi  * @return the newly allocated buffer state object.
1773*287e80b3SSadaf Ebrahimi  * @note If you want to scan bytes that may contain NUL values, then use
1774*287e80b3SSadaf Ebrahimi  *       yy_scan_bytes() instead.
1775*287e80b3SSadaf Ebrahimi  */
yy_scan_string(const char * yystr,yyscan_t yyscanner)1776*287e80b3SSadaf Ebrahimi YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner)
1777*287e80b3SSadaf Ebrahimi {
1778*287e80b3SSadaf Ebrahimi 
1779*287e80b3SSadaf Ebrahimi 	return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner);
1780*287e80b3SSadaf Ebrahimi }
1781*287e80b3SSadaf Ebrahimi 
1782*287e80b3SSadaf Ebrahimi /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
1783*287e80b3SSadaf Ebrahimi  * scan from a @e copy of @a bytes.
1784*287e80b3SSadaf Ebrahimi  * @param yybytes the byte buffer to scan
1785*287e80b3SSadaf Ebrahimi  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
1786*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1787*287e80b3SSadaf Ebrahimi  * @return the newly allocated buffer state object.
1788*287e80b3SSadaf Ebrahimi  */
yy_scan_bytes(const char * yybytes,int _yybytes_len,yyscan_t yyscanner)1789*287e80b3SSadaf Ebrahimi YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
1790*287e80b3SSadaf Ebrahimi {
1791*287e80b3SSadaf Ebrahimi 	YY_BUFFER_STATE b;
1792*287e80b3SSadaf Ebrahimi 	char *buf;
1793*287e80b3SSadaf Ebrahimi 	yy_size_t n;
1794*287e80b3SSadaf Ebrahimi 	int i;
1795*287e80b3SSadaf Ebrahimi 
1796*287e80b3SSadaf Ebrahimi 	/* Get memory for full buffer, including space for trailing EOB's. */
1797*287e80b3SSadaf Ebrahimi 	n = (yy_size_t) (_yybytes_len + 2);
1798*287e80b3SSadaf Ebrahimi 	buf = (char *) yyalloc( n , yyscanner );
1799*287e80b3SSadaf Ebrahimi 	if ( ! buf )
1800*287e80b3SSadaf Ebrahimi 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
1801*287e80b3SSadaf Ebrahimi 
1802*287e80b3SSadaf Ebrahimi 	for ( i = 0; i < _yybytes_len; ++i )
1803*287e80b3SSadaf Ebrahimi 		buf[i] = yybytes[i];
1804*287e80b3SSadaf Ebrahimi 
1805*287e80b3SSadaf Ebrahimi 	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
1806*287e80b3SSadaf Ebrahimi 
1807*287e80b3SSadaf Ebrahimi 	b = yy_scan_buffer( buf, n , yyscanner);
1808*287e80b3SSadaf Ebrahimi 	if ( ! b )
1809*287e80b3SSadaf Ebrahimi 		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
1810*287e80b3SSadaf Ebrahimi 
1811*287e80b3SSadaf Ebrahimi 	/* It's okay to grow etc. this buffer, and we should throw it
1812*287e80b3SSadaf Ebrahimi 	 * away when we're done.
1813*287e80b3SSadaf Ebrahimi 	 */
1814*287e80b3SSadaf Ebrahimi 	b->yy_is_our_buffer = 1;
1815*287e80b3SSadaf Ebrahimi 
1816*287e80b3SSadaf Ebrahimi 	return b;
1817*287e80b3SSadaf Ebrahimi }
1818*287e80b3SSadaf Ebrahimi 
1819*287e80b3SSadaf Ebrahimi #ifndef YY_EXIT_FAILURE
1820*287e80b3SSadaf Ebrahimi #define YY_EXIT_FAILURE 2
1821*287e80b3SSadaf Ebrahimi #endif
1822*287e80b3SSadaf Ebrahimi 
yy_fatal_error(const char * msg,yyscan_t yyscanner)1823*287e80b3SSadaf Ebrahimi static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner)
1824*287e80b3SSadaf Ebrahimi {
1825*287e80b3SSadaf Ebrahimi 	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1826*287e80b3SSadaf Ebrahimi 	(void)yyg;
1827*287e80b3SSadaf Ebrahimi 	fprintf( stderr, "%s\n", msg );
1828*287e80b3SSadaf Ebrahimi 	exit( YY_EXIT_FAILURE );
1829*287e80b3SSadaf Ebrahimi }
1830*287e80b3SSadaf Ebrahimi 
1831*287e80b3SSadaf Ebrahimi /* Redefine yyless() so it works in section 3 code. */
1832*287e80b3SSadaf Ebrahimi 
1833*287e80b3SSadaf Ebrahimi #undef yyless
1834*287e80b3SSadaf Ebrahimi #define yyless(n) \
1835*287e80b3SSadaf Ebrahimi 	do \
1836*287e80b3SSadaf Ebrahimi 		{ \
1837*287e80b3SSadaf Ebrahimi 		/* Undo effects of setting up yytext. */ \
1838*287e80b3SSadaf Ebrahimi         int yyless_macro_arg = (n); \
1839*287e80b3SSadaf Ebrahimi         YY_LESS_LINENO(yyless_macro_arg);\
1840*287e80b3SSadaf Ebrahimi 		yytext[yyleng] = yyg->yy_hold_char; \
1841*287e80b3SSadaf Ebrahimi 		yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
1842*287e80b3SSadaf Ebrahimi 		yyg->yy_hold_char = *yyg->yy_c_buf_p; \
1843*287e80b3SSadaf Ebrahimi 		*yyg->yy_c_buf_p = '\0'; \
1844*287e80b3SSadaf Ebrahimi 		yyleng = yyless_macro_arg; \
1845*287e80b3SSadaf Ebrahimi 		} \
1846*287e80b3SSadaf Ebrahimi 	while ( 0 )
1847*287e80b3SSadaf Ebrahimi 
1848*287e80b3SSadaf Ebrahimi /* Accessor  methods (get/set functions) to struct members. */
1849*287e80b3SSadaf Ebrahimi 
1850*287e80b3SSadaf Ebrahimi /** Get the user-defined data for this scanner.
1851*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1852*287e80b3SSadaf Ebrahimi  */
yyget_extra(yyscan_t yyscanner)1853*287e80b3SSadaf Ebrahimi YY_EXTRA_TYPE yyget_extra  (yyscan_t yyscanner)
1854*287e80b3SSadaf Ebrahimi {
1855*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1856*287e80b3SSadaf Ebrahimi     return yyextra;
1857*287e80b3SSadaf Ebrahimi }
1858*287e80b3SSadaf Ebrahimi 
1859*287e80b3SSadaf Ebrahimi /** Get the current line number.
1860*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1861*287e80b3SSadaf Ebrahimi  */
yyget_lineno(yyscan_t yyscanner)1862*287e80b3SSadaf Ebrahimi int yyget_lineno  (yyscan_t yyscanner)
1863*287e80b3SSadaf Ebrahimi {
1864*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1865*287e80b3SSadaf Ebrahimi 
1866*287e80b3SSadaf Ebrahimi         if (! YY_CURRENT_BUFFER)
1867*287e80b3SSadaf Ebrahimi             return 0;
1868*287e80b3SSadaf Ebrahimi 
1869*287e80b3SSadaf Ebrahimi     return yylineno;
1870*287e80b3SSadaf Ebrahimi }
1871*287e80b3SSadaf Ebrahimi 
1872*287e80b3SSadaf Ebrahimi /** Get the current column number.
1873*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1874*287e80b3SSadaf Ebrahimi  */
yyget_column(yyscan_t yyscanner)1875*287e80b3SSadaf Ebrahimi int yyget_column  (yyscan_t yyscanner)
1876*287e80b3SSadaf Ebrahimi {
1877*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1878*287e80b3SSadaf Ebrahimi 
1879*287e80b3SSadaf Ebrahimi         if (! YY_CURRENT_BUFFER)
1880*287e80b3SSadaf Ebrahimi             return 0;
1881*287e80b3SSadaf Ebrahimi 
1882*287e80b3SSadaf Ebrahimi     return yycolumn;
1883*287e80b3SSadaf Ebrahimi }
1884*287e80b3SSadaf Ebrahimi 
1885*287e80b3SSadaf Ebrahimi /** Get the input stream.
1886*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1887*287e80b3SSadaf Ebrahimi  */
yyget_in(yyscan_t yyscanner)1888*287e80b3SSadaf Ebrahimi FILE *yyget_in  (yyscan_t yyscanner)
1889*287e80b3SSadaf Ebrahimi {
1890*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1891*287e80b3SSadaf Ebrahimi     return yyin;
1892*287e80b3SSadaf Ebrahimi }
1893*287e80b3SSadaf Ebrahimi 
1894*287e80b3SSadaf Ebrahimi /** Get the output stream.
1895*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1896*287e80b3SSadaf Ebrahimi  */
yyget_out(yyscan_t yyscanner)1897*287e80b3SSadaf Ebrahimi FILE *yyget_out  (yyscan_t yyscanner)
1898*287e80b3SSadaf Ebrahimi {
1899*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1900*287e80b3SSadaf Ebrahimi     return yyout;
1901*287e80b3SSadaf Ebrahimi }
1902*287e80b3SSadaf Ebrahimi 
1903*287e80b3SSadaf Ebrahimi /** Get the length of the current token.
1904*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1905*287e80b3SSadaf Ebrahimi  */
yyget_leng(yyscan_t yyscanner)1906*287e80b3SSadaf Ebrahimi int yyget_leng  (yyscan_t yyscanner)
1907*287e80b3SSadaf Ebrahimi {
1908*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1909*287e80b3SSadaf Ebrahimi     return yyleng;
1910*287e80b3SSadaf Ebrahimi }
1911*287e80b3SSadaf Ebrahimi 
1912*287e80b3SSadaf Ebrahimi /** Get the current token.
1913*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1914*287e80b3SSadaf Ebrahimi  */
1915*287e80b3SSadaf Ebrahimi 
yyget_text(yyscan_t yyscanner)1916*287e80b3SSadaf Ebrahimi char *yyget_text  (yyscan_t yyscanner)
1917*287e80b3SSadaf Ebrahimi {
1918*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1919*287e80b3SSadaf Ebrahimi     return yytext;
1920*287e80b3SSadaf Ebrahimi }
1921*287e80b3SSadaf Ebrahimi 
1922*287e80b3SSadaf Ebrahimi /** Set the user-defined data. This data is never touched by the scanner.
1923*287e80b3SSadaf Ebrahimi  * @param user_defined The data to be associated with this scanner.
1924*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1925*287e80b3SSadaf Ebrahimi  */
yyset_extra(YY_EXTRA_TYPE user_defined,yyscan_t yyscanner)1926*287e80b3SSadaf Ebrahimi void yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
1927*287e80b3SSadaf Ebrahimi {
1928*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1929*287e80b3SSadaf Ebrahimi     yyextra = user_defined ;
1930*287e80b3SSadaf Ebrahimi }
1931*287e80b3SSadaf Ebrahimi 
1932*287e80b3SSadaf Ebrahimi /** Set the current line number.
1933*287e80b3SSadaf Ebrahimi  * @param _line_number line number
1934*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1935*287e80b3SSadaf Ebrahimi  */
yyset_lineno(int _line_number,yyscan_t yyscanner)1936*287e80b3SSadaf Ebrahimi void yyset_lineno (int  _line_number , yyscan_t yyscanner)
1937*287e80b3SSadaf Ebrahimi {
1938*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1939*287e80b3SSadaf Ebrahimi 
1940*287e80b3SSadaf Ebrahimi         /* lineno is only valid if an input buffer exists. */
1941*287e80b3SSadaf Ebrahimi         if (! YY_CURRENT_BUFFER )
1942*287e80b3SSadaf Ebrahimi            YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
1943*287e80b3SSadaf Ebrahimi 
1944*287e80b3SSadaf Ebrahimi     yylineno = _line_number;
1945*287e80b3SSadaf Ebrahimi }
1946*287e80b3SSadaf Ebrahimi 
1947*287e80b3SSadaf Ebrahimi /** Set the current column.
1948*287e80b3SSadaf Ebrahimi  * @param _column_no column number
1949*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1950*287e80b3SSadaf Ebrahimi  */
yyset_column(int _column_no,yyscan_t yyscanner)1951*287e80b3SSadaf Ebrahimi void yyset_column (int  _column_no , yyscan_t yyscanner)
1952*287e80b3SSadaf Ebrahimi {
1953*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1954*287e80b3SSadaf Ebrahimi 
1955*287e80b3SSadaf Ebrahimi         /* column is only valid if an input buffer exists. */
1956*287e80b3SSadaf Ebrahimi         if (! YY_CURRENT_BUFFER )
1957*287e80b3SSadaf Ebrahimi            YY_FATAL_ERROR( "yyset_column called with no buffer" );
1958*287e80b3SSadaf Ebrahimi 
1959*287e80b3SSadaf Ebrahimi     yycolumn = _column_no;
1960*287e80b3SSadaf Ebrahimi }
1961*287e80b3SSadaf Ebrahimi 
1962*287e80b3SSadaf Ebrahimi /** Set the input stream. This does not discard the current
1963*287e80b3SSadaf Ebrahimi  * input buffer.
1964*287e80b3SSadaf Ebrahimi  * @param _in_str A readable stream.
1965*287e80b3SSadaf Ebrahimi  * @param yyscanner The scanner object.
1966*287e80b3SSadaf Ebrahimi  * @see yy_switch_to_buffer
1967*287e80b3SSadaf Ebrahimi  */
yyset_in(FILE * _in_str,yyscan_t yyscanner)1968*287e80b3SSadaf Ebrahimi void yyset_in (FILE *  _in_str , yyscan_t yyscanner)
1969*287e80b3SSadaf Ebrahimi {
1970*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1971*287e80b3SSadaf Ebrahimi     yyin = _in_str ;
1972*287e80b3SSadaf Ebrahimi }
1973*287e80b3SSadaf Ebrahimi 
yyset_out(FILE * _out_str,yyscan_t yyscanner)1974*287e80b3SSadaf Ebrahimi void yyset_out (FILE *  _out_str , yyscan_t yyscanner)
1975*287e80b3SSadaf Ebrahimi {
1976*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1977*287e80b3SSadaf Ebrahimi     yyout = _out_str ;
1978*287e80b3SSadaf Ebrahimi }
1979*287e80b3SSadaf Ebrahimi 
yyget_debug(yyscan_t yyscanner)1980*287e80b3SSadaf Ebrahimi int yyget_debug  (yyscan_t yyscanner)
1981*287e80b3SSadaf Ebrahimi {
1982*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1983*287e80b3SSadaf Ebrahimi     return yy_flex_debug;
1984*287e80b3SSadaf Ebrahimi }
1985*287e80b3SSadaf Ebrahimi 
yyset_debug(int _bdebug,yyscan_t yyscanner)1986*287e80b3SSadaf Ebrahimi void yyset_debug (int  _bdebug , yyscan_t yyscanner)
1987*287e80b3SSadaf Ebrahimi {
1988*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1989*287e80b3SSadaf Ebrahimi     yy_flex_debug = _bdebug ;
1990*287e80b3SSadaf Ebrahimi }
1991*287e80b3SSadaf Ebrahimi 
1992*287e80b3SSadaf Ebrahimi /* Accessor methods for yylval and yylloc */
1993*287e80b3SSadaf Ebrahimi 
yyget_lval(yyscan_t yyscanner)1994*287e80b3SSadaf Ebrahimi YYSTYPE * yyget_lval  (yyscan_t yyscanner)
1995*287e80b3SSadaf Ebrahimi {
1996*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1997*287e80b3SSadaf Ebrahimi     return yylval;
1998*287e80b3SSadaf Ebrahimi }
1999*287e80b3SSadaf Ebrahimi 
yyset_lval(YYSTYPE * yylval_param,yyscan_t yyscanner)2000*287e80b3SSadaf Ebrahimi void yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
2001*287e80b3SSadaf Ebrahimi {
2002*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2003*287e80b3SSadaf Ebrahimi     yylval = yylval_param;
2004*287e80b3SSadaf Ebrahimi }
2005*287e80b3SSadaf Ebrahimi 
2006*287e80b3SSadaf Ebrahimi /* User-visible API */
2007*287e80b3SSadaf Ebrahimi 
2008*287e80b3SSadaf Ebrahimi /* yylex_init is special because it creates the scanner itself, so it is
2009*287e80b3SSadaf Ebrahimi  * the ONLY reentrant function that doesn't take the scanner as the last argument.
2010*287e80b3SSadaf Ebrahimi  * That's why we explicitly handle the declaration, instead of using our macros.
2011*287e80b3SSadaf Ebrahimi  */
yylex_init(yyscan_t * ptr_yy_globals)2012*287e80b3SSadaf Ebrahimi int yylex_init(yyscan_t* ptr_yy_globals)
2013*287e80b3SSadaf Ebrahimi {
2014*287e80b3SSadaf Ebrahimi     if (ptr_yy_globals == NULL){
2015*287e80b3SSadaf Ebrahimi         errno = EINVAL;
2016*287e80b3SSadaf Ebrahimi         return 1;
2017*287e80b3SSadaf Ebrahimi     }
2018*287e80b3SSadaf Ebrahimi 
2019*287e80b3SSadaf Ebrahimi     *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
2020*287e80b3SSadaf Ebrahimi 
2021*287e80b3SSadaf Ebrahimi     if (*ptr_yy_globals == NULL){
2022*287e80b3SSadaf Ebrahimi         errno = ENOMEM;
2023*287e80b3SSadaf Ebrahimi         return 1;
2024*287e80b3SSadaf Ebrahimi     }
2025*287e80b3SSadaf Ebrahimi 
2026*287e80b3SSadaf Ebrahimi     /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
2027*287e80b3SSadaf Ebrahimi     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
2028*287e80b3SSadaf Ebrahimi 
2029*287e80b3SSadaf Ebrahimi     return yy_init_globals ( *ptr_yy_globals );
2030*287e80b3SSadaf Ebrahimi }
2031*287e80b3SSadaf Ebrahimi 
2032*287e80b3SSadaf Ebrahimi /* yylex_init_extra has the same functionality as yylex_init, but follows the
2033*287e80b3SSadaf Ebrahimi  * convention of taking the scanner as the last argument. Note however, that
2034*287e80b3SSadaf Ebrahimi  * this is a *pointer* to a scanner, as it will be allocated by this call (and
2035*287e80b3SSadaf Ebrahimi  * is the reason, too, why this function also must handle its own declaration).
2036*287e80b3SSadaf Ebrahimi  * The user defined value in the first argument will be available to yyalloc in
2037*287e80b3SSadaf Ebrahimi  * the yyextra field.
2038*287e80b3SSadaf Ebrahimi  */
yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t * ptr_yy_globals)2039*287e80b3SSadaf Ebrahimi int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals )
2040*287e80b3SSadaf Ebrahimi {
2041*287e80b3SSadaf Ebrahimi     struct yyguts_t dummy_yyguts;
2042*287e80b3SSadaf Ebrahimi 
2043*287e80b3SSadaf Ebrahimi     yyset_extra (yy_user_defined, &dummy_yyguts);
2044*287e80b3SSadaf Ebrahimi 
2045*287e80b3SSadaf Ebrahimi     if (ptr_yy_globals == NULL){
2046*287e80b3SSadaf Ebrahimi         errno = EINVAL;
2047*287e80b3SSadaf Ebrahimi         return 1;
2048*287e80b3SSadaf Ebrahimi     }
2049*287e80b3SSadaf Ebrahimi 
2050*287e80b3SSadaf Ebrahimi     *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
2051*287e80b3SSadaf Ebrahimi 
2052*287e80b3SSadaf Ebrahimi     if (*ptr_yy_globals == NULL){
2053*287e80b3SSadaf Ebrahimi         errno = ENOMEM;
2054*287e80b3SSadaf Ebrahimi         return 1;
2055*287e80b3SSadaf Ebrahimi     }
2056*287e80b3SSadaf Ebrahimi 
2057*287e80b3SSadaf Ebrahimi     /* By setting to 0xAA, we expose bugs in
2058*287e80b3SSadaf Ebrahimi     yy_init_globals. Leave at 0x00 for releases. */
2059*287e80b3SSadaf Ebrahimi     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
2060*287e80b3SSadaf Ebrahimi 
2061*287e80b3SSadaf Ebrahimi     yyset_extra (yy_user_defined, *ptr_yy_globals);
2062*287e80b3SSadaf Ebrahimi 
2063*287e80b3SSadaf Ebrahimi     return yy_init_globals ( *ptr_yy_globals );
2064*287e80b3SSadaf Ebrahimi }
2065*287e80b3SSadaf Ebrahimi 
yy_init_globals(yyscan_t yyscanner)2066*287e80b3SSadaf Ebrahimi static int yy_init_globals (yyscan_t yyscanner)
2067*287e80b3SSadaf Ebrahimi {
2068*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2069*287e80b3SSadaf Ebrahimi     /* Initialization is the same as for the non-reentrant scanner.
2070*287e80b3SSadaf Ebrahimi      * This function is called from yylex_destroy(), so don't allocate here.
2071*287e80b3SSadaf Ebrahimi      */
2072*287e80b3SSadaf Ebrahimi 
2073*287e80b3SSadaf Ebrahimi     yyg->yy_buffer_stack = NULL;
2074*287e80b3SSadaf Ebrahimi     yyg->yy_buffer_stack_top = 0;
2075*287e80b3SSadaf Ebrahimi     yyg->yy_buffer_stack_max = 0;
2076*287e80b3SSadaf Ebrahimi     yyg->yy_c_buf_p = NULL;
2077*287e80b3SSadaf Ebrahimi     yyg->yy_init = 0;
2078*287e80b3SSadaf Ebrahimi     yyg->yy_start = 0;
2079*287e80b3SSadaf Ebrahimi 
2080*287e80b3SSadaf Ebrahimi     yyg->yy_start_stack_ptr = 0;
2081*287e80b3SSadaf Ebrahimi     yyg->yy_start_stack_depth = 0;
2082*287e80b3SSadaf Ebrahimi     yyg->yy_start_stack =  NULL;
2083*287e80b3SSadaf Ebrahimi 
2084*287e80b3SSadaf Ebrahimi /* Defined in main.c */
2085*287e80b3SSadaf Ebrahimi #ifdef YY_STDINIT
2086*287e80b3SSadaf Ebrahimi     yyin = stdin;
2087*287e80b3SSadaf Ebrahimi     yyout = stdout;
2088*287e80b3SSadaf Ebrahimi #else
2089*287e80b3SSadaf Ebrahimi     yyin = NULL;
2090*287e80b3SSadaf Ebrahimi     yyout = NULL;
2091*287e80b3SSadaf Ebrahimi #endif
2092*287e80b3SSadaf Ebrahimi 
2093*287e80b3SSadaf Ebrahimi     /* For future reference: Set errno on error, since we are called by
2094*287e80b3SSadaf Ebrahimi      * yylex_init()
2095*287e80b3SSadaf Ebrahimi      */
2096*287e80b3SSadaf Ebrahimi     return 0;
2097*287e80b3SSadaf Ebrahimi }
2098*287e80b3SSadaf Ebrahimi 
2099*287e80b3SSadaf Ebrahimi /* yylex_destroy is for both reentrant and non-reentrant scanners. */
yylex_destroy(yyscan_t yyscanner)2100*287e80b3SSadaf Ebrahimi int yylex_destroy  (yyscan_t yyscanner)
2101*287e80b3SSadaf Ebrahimi {
2102*287e80b3SSadaf Ebrahimi     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2103*287e80b3SSadaf Ebrahimi 
2104*287e80b3SSadaf Ebrahimi     /* Pop the buffer stack, destroying each element. */
2105*287e80b3SSadaf Ebrahimi 	while(YY_CURRENT_BUFFER){
2106*287e80b3SSadaf Ebrahimi 		yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner );
2107*287e80b3SSadaf Ebrahimi 		YY_CURRENT_BUFFER_LVALUE = NULL;
2108*287e80b3SSadaf Ebrahimi 		yypop_buffer_state(yyscanner);
2109*287e80b3SSadaf Ebrahimi 	}
2110*287e80b3SSadaf Ebrahimi 
2111*287e80b3SSadaf Ebrahimi 	/* Destroy the stack itself. */
2112*287e80b3SSadaf Ebrahimi 	yyfree(yyg->yy_buffer_stack , yyscanner);
2113*287e80b3SSadaf Ebrahimi 	yyg->yy_buffer_stack = NULL;
2114*287e80b3SSadaf Ebrahimi 
2115*287e80b3SSadaf Ebrahimi     /* Destroy the start condition stack. */
2116*287e80b3SSadaf Ebrahimi         yyfree( yyg->yy_start_stack , yyscanner );
2117*287e80b3SSadaf Ebrahimi         yyg->yy_start_stack = NULL;
2118*287e80b3SSadaf Ebrahimi 
2119*287e80b3SSadaf Ebrahimi     /* Reset the globals. This is important in a non-reentrant scanner so the next time
2120*287e80b3SSadaf Ebrahimi      * yylex() is called, initialization will occur. */
2121*287e80b3SSadaf Ebrahimi     yy_init_globals( yyscanner);
2122*287e80b3SSadaf Ebrahimi 
2123*287e80b3SSadaf Ebrahimi     /* Destroy the main struct (reentrant only). */
2124*287e80b3SSadaf Ebrahimi     yyfree ( yyscanner , yyscanner );
2125*287e80b3SSadaf Ebrahimi     yyscanner = NULL;
2126*287e80b3SSadaf Ebrahimi     return 0;
2127*287e80b3SSadaf Ebrahimi }
2128*287e80b3SSadaf Ebrahimi 
2129*287e80b3SSadaf Ebrahimi /*
2130*287e80b3SSadaf Ebrahimi  * Internal utility routines.
2131*287e80b3SSadaf Ebrahimi  */
2132*287e80b3SSadaf Ebrahimi 
2133*287e80b3SSadaf Ebrahimi #ifndef yytext_ptr
yy_flex_strncpy(char * s1,const char * s2,int n,yyscan_t yyscanner)2134*287e80b3SSadaf Ebrahimi static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner)
2135*287e80b3SSadaf Ebrahimi {
2136*287e80b3SSadaf Ebrahimi 	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2137*287e80b3SSadaf Ebrahimi 	(void)yyg;
2138*287e80b3SSadaf Ebrahimi 
2139*287e80b3SSadaf Ebrahimi 	int i;
2140*287e80b3SSadaf Ebrahimi 	for ( i = 0; i < n; ++i )
2141*287e80b3SSadaf Ebrahimi 		s1[i] = s2[i];
2142*287e80b3SSadaf Ebrahimi }
2143*287e80b3SSadaf Ebrahimi #endif
2144*287e80b3SSadaf Ebrahimi 
2145*287e80b3SSadaf Ebrahimi #ifdef YY_NEED_STRLEN
yy_flex_strlen(const char * s,yyscan_t yyscanner)2146*287e80b3SSadaf Ebrahimi static int yy_flex_strlen (const char * s , yyscan_t yyscanner)
2147*287e80b3SSadaf Ebrahimi {
2148*287e80b3SSadaf Ebrahimi 	int n;
2149*287e80b3SSadaf Ebrahimi 	for ( n = 0; s[n]; ++n )
2150*287e80b3SSadaf Ebrahimi 		;
2151*287e80b3SSadaf Ebrahimi 
2152*287e80b3SSadaf Ebrahimi 	return n;
2153*287e80b3SSadaf Ebrahimi }
2154*287e80b3SSadaf Ebrahimi #endif
2155*287e80b3SSadaf Ebrahimi 
yyalloc(yy_size_t size,yyscan_t yyscanner)2156*287e80b3SSadaf Ebrahimi void *yyalloc (yy_size_t  size , yyscan_t yyscanner)
2157*287e80b3SSadaf Ebrahimi {
2158*287e80b3SSadaf Ebrahimi 	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2159*287e80b3SSadaf Ebrahimi 	(void)yyg;
2160*287e80b3SSadaf Ebrahimi 	return malloc(size);
2161*287e80b3SSadaf Ebrahimi }
2162*287e80b3SSadaf Ebrahimi 
yyrealloc(void * ptr,yy_size_t size,yyscan_t yyscanner)2163*287e80b3SSadaf Ebrahimi void *yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
2164*287e80b3SSadaf Ebrahimi {
2165*287e80b3SSadaf Ebrahimi 	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2166*287e80b3SSadaf Ebrahimi 	(void)yyg;
2167*287e80b3SSadaf Ebrahimi 
2168*287e80b3SSadaf Ebrahimi 	/* The cast to (char *) in the following accommodates both
2169*287e80b3SSadaf Ebrahimi 	 * implementations that use char* generic pointers, and those
2170*287e80b3SSadaf Ebrahimi 	 * that use void* generic pointers.  It works with the latter
2171*287e80b3SSadaf Ebrahimi 	 * because both ANSI C and C++ allow castless assignment from
2172*287e80b3SSadaf Ebrahimi 	 * any pointer type to void*, and deal with argument conversions
2173*287e80b3SSadaf Ebrahimi 	 * as though doing an assignment.
2174*287e80b3SSadaf Ebrahimi 	 */
2175*287e80b3SSadaf Ebrahimi 	return realloc(ptr, size);
2176*287e80b3SSadaf Ebrahimi }
2177*287e80b3SSadaf Ebrahimi 
yyfree(void * ptr,yyscan_t yyscanner)2178*287e80b3SSadaf Ebrahimi void yyfree (void * ptr , yyscan_t yyscanner)
2179*287e80b3SSadaf Ebrahimi {
2180*287e80b3SSadaf Ebrahimi 	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2181*287e80b3SSadaf Ebrahimi 	(void)yyg;
2182*287e80b3SSadaf Ebrahimi 	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
2183*287e80b3SSadaf Ebrahimi }
2184*287e80b3SSadaf Ebrahimi 
2185*287e80b3SSadaf Ebrahimi #define YYTABLES_NAME "yytables"
2186*287e80b3SSadaf Ebrahimi 
2187*287e80b3SSadaf Ebrahimi #line 89 "sqlhist.l"
2188*287e80b3SSadaf Ebrahimi 
2189*287e80b3SSadaf Ebrahimi 
yywrap(void * data)2190*287e80b3SSadaf Ebrahimi int yywrap(void *data)
2191*287e80b3SSadaf Ebrahimi {
2192*287e80b3SSadaf Ebrahimi 	return 1;
2193*287e80b3SSadaf Ebrahimi }
2194*287e80b3SSadaf Ebrahimi 
yyerror(struct sqlhist_bison * sb,char * fmt,...)2195*287e80b3SSadaf Ebrahimi void yyerror(struct sqlhist_bison *sb, char *fmt, ...)
2196*287e80b3SSadaf Ebrahimi {
2197*287e80b3SSadaf Ebrahimi 	struct yyguts_t * yyg = (struct yyguts_t*)sb->scanner;
2198*287e80b3SSadaf Ebrahimi 	va_list ap;
2199*287e80b3SSadaf Ebrahimi 
2200*287e80b3SSadaf Ebrahimi 	va_start(ap, fmt);
2201*287e80b3SSadaf Ebrahimi 	sql_parse_error(sb, yytext, fmt, ap);
2202*287e80b3SSadaf Ebrahimi 	va_end(ap);
2203*287e80b3SSadaf Ebrahimi }
2204*287e80b3SSadaf Ebrahimi 
2205