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