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