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