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