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