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