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