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
11*ae771770SStanislav Sedov #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
33*ae771770SStanislav Sedov #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
96*ae771770SStanislav Sedov /* C99 requires __STDC__ to be defined as 1. */
97*ae771770SStanislav Sedov #if defined (__STDC__)
98c19800e8SDoug Rabson
99c19800e8SDoug Rabson #define YY_USE_CONST
100c19800e8SDoug Rabson
101*ae771770SStanislav Sedov #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
155*ae771770SStanislav Sedov #ifndef YY_TYPEDEF_YY_SIZE_T
156*ae771770SStanislav Sedov #define YY_TYPEDEF_YY_SIZE_T
157*ae771770SStanislav Sedov typedef size_t yy_size_t;
158*ae771770SStanislav Sedov #endif
159*ae771770SStanislav Sedov
160*ae771770SStanislav Sedov 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 */
203*ae771770SStanislav Sedov 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;
273*ae771770SStanislav Sedov static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
274*ae771770SStanislav Sedov 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 );
302*ae771770SStanislav Sedov 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 /*
457*ae771770SStanislav Sedov * 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
489*ae771770SStanislav Sedov /* $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
508*ae771770SStanislav Sedov #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
526*ae771770SStanislav Sedov /* Accessor methods to globals.
527*ae771770SStanislav Sedov These are made visible to non-reentrant scanners for convenience. */
528*ae771770SStanislav Sedov
529*ae771770SStanislav Sedov int yylex_destroy (void );
530*ae771770SStanislav Sedov
531*ae771770SStanislav Sedov int yyget_debug (void );
532*ae771770SStanislav Sedov
533*ae771770SStanislav Sedov void yyset_debug (int debug_flag );
534*ae771770SStanislav Sedov
535*ae771770SStanislav Sedov YY_EXTRA_TYPE yyget_extra (void );
536*ae771770SStanislav Sedov
537*ae771770SStanislav Sedov void yyset_extra (YY_EXTRA_TYPE user_defined );
538*ae771770SStanislav Sedov
539*ae771770SStanislav Sedov FILE *yyget_in (void );
540*ae771770SStanislav Sedov
541*ae771770SStanislav Sedov void yyset_in (FILE * in_str );
542*ae771770SStanislav Sedov
543*ae771770SStanislav Sedov FILE *yyget_out (void );
544*ae771770SStanislav Sedov
545*ae771770SStanislav Sedov void yyset_out (FILE * out_str );
546*ae771770SStanislav Sedov
547*ae771770SStanislav Sedov yy_size_t yyget_leng (void );
548*ae771770SStanislav Sedov
549*ae771770SStanislav Sedov char *yyget_text (void );
550*ae771770SStanislav Sedov
551*ae771770SStanislav Sedov int yyget_lineno (void );
552*ae771770SStanislav Sedov
553*ae771770SStanislav Sedov void yyset_lineno (int line_number );
554*ae771770SStanislav Sedov
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 */
595*ae771770SStanislav Sedov #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 = '*'; \
606*ae771770SStanislav Sedov 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
688*ae771770SStanislav Sedov #line 58 "slc-lex.l"
689c19800e8SDoug Rabson
690*ae771770SStanislav Sedov #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
775*ae771770SStanislav Sedov #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
783*ae771770SStanislav Sedov #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
789*ae771770SStanislav Sedov #line 64 "slc-lex.l"
790c19800e8SDoug Rabson { ++lineno; }
791c19800e8SDoug Rabson YY_BREAK
792c19800e8SDoug Rabson case 4:
793c19800e8SDoug Rabson YY_RULE_SETUP
794*ae771770SStanislav Sedov #line 65 "slc-lex.l"
795c19800e8SDoug Rabson { handle_comment(); }
796c19800e8SDoug Rabson YY_BREAK
797c19800e8SDoug Rabson case 5:
798c19800e8SDoug Rabson YY_RULE_SETUP
799*ae771770SStanislav Sedov #line 66 "slc-lex.l"
800c19800e8SDoug Rabson { return *yytext; }
801c19800e8SDoug Rabson YY_BREAK
802c19800e8SDoug Rabson case 6:
803c19800e8SDoug Rabson YY_RULE_SETUP
804*ae771770SStanislav Sedov #line 67 "slc-lex.l"
805c19800e8SDoug Rabson ;
806c19800e8SDoug Rabson YY_BREAK
807c19800e8SDoug Rabson case 7:
808c19800e8SDoug Rabson YY_RULE_SETUP
809*ae771770SStanislav Sedov #line 68 "slc-lex.l"
810c19800e8SDoug Rabson ECHO;
811c19800e8SDoug Rabson YY_BREAK
812*ae771770SStanislav Sedov #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 {
998*ae771770SStanislav Sedov 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 {
1012*ae771770SStanislav Sedov 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
1067*ae771770SStanislav Sedov if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
1068*ae771770SStanislav Sedov /* Extend the array by 50%, plus the number we really need. */
1069*ae771770SStanislav Sedov yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
1070*ae771770SStanislav Sedov YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
1071*ae771770SStanislav Sedov if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1072*ae771770SStanislav Sedov YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
1073*ae771770SStanislav Sedov }
1074*ae771770SStanislav Sedov
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 */
1165*ae771770SStanislav Sedov 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 {
1441*ae771770SStanislav Sedov 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 );
1453*ae771770SStanislav Sedov if ( ! (yy_buffer_stack) )
1454*ae771770SStanislav Sedov 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 );
1473*ae771770SStanislav Sedov if ( ! (yy_buffer_stack) )
1474*ae771770SStanislav Sedov 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.
1519*ae771770SStanislav Sedov * @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)1538*ae771770SStanislav Sedov 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;
1542*ae771770SStanislav Sedov 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)1624*ae771770SStanislav Sedov 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
1772*ae771770SStanislav Sedov #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;
1812*ae771770SStanislav Sedov } 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
1868