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