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