1 #line 1 "bincfg/bincfg_lex.c"
2
3 #line 3 "bincfg/bincfg_lex.c"
4
5 #define YY_INT_ALIGNED short int
6
7 /* A lexical scanner generated by flex */
8
9 #define yy_create_buffer bc__create_buffer
10 #define yy_delete_buffer bc__delete_buffer
11 #define yy_scan_buffer bc__scan_buffer
12 #define yy_scan_string bc__scan_string
13 #define yy_scan_bytes bc__scan_bytes
14 #define yy_init_buffer bc__init_buffer
15 #define yy_flush_buffer bc__flush_buffer
16 #define yy_load_buffer_state bc__load_buffer_state
17 #define yy_switch_to_buffer bc__switch_to_buffer
18 #define yypush_buffer_state bc_push_buffer_state
19 #define yypop_buffer_state bc_pop_buffer_state
20 #define yyensure_buffer_stack bc_ensure_buffer_stack
21 #define yy_flex_debug bc__flex_debug
22 #define yyin bc_in
23 #define yyleng bc_leng
24 #define yylex bc_lex
25 #define yylineno bc_lineno
26 #define yyout bc_out
27 #define yyrestart bc_restart
28 #define yytext bc_text
29 #define yywrap bc_wrap
30 #define yyalloc bc_alloc
31 #define yyrealloc bc_realloc
32 #define yyfree bc_free
33
34 #define FLEX_SCANNER
35 #define YY_FLEX_MAJOR_VERSION 2
36 #define YY_FLEX_MINOR_VERSION 6
37 #define YY_FLEX_SUBMINOR_VERSION 4
38 #if YY_FLEX_SUBMINOR_VERSION > 0
39 #define FLEX_BETA
40 #endif
41
42 #ifdef yy_create_buffer
43 #define bc__create_buffer_ALREADY_DEFINED
44 #else
45 #define yy_create_buffer bc__create_buffer
46 #endif
47
48 #ifdef yy_delete_buffer
49 #define bc__delete_buffer_ALREADY_DEFINED
50 #else
51 #define yy_delete_buffer bc__delete_buffer
52 #endif
53
54 #ifdef yy_scan_buffer
55 #define bc__scan_buffer_ALREADY_DEFINED
56 #else
57 #define yy_scan_buffer bc__scan_buffer
58 #endif
59
60 #ifdef yy_scan_string
61 #define bc__scan_string_ALREADY_DEFINED
62 #else
63 #define yy_scan_string bc__scan_string
64 #endif
65
66 #ifdef yy_scan_bytes
67 #define bc__scan_bytes_ALREADY_DEFINED
68 #else
69 #define yy_scan_bytes bc__scan_bytes
70 #endif
71
72 #ifdef yy_init_buffer
73 #define bc__init_buffer_ALREADY_DEFINED
74 #else
75 #define yy_init_buffer bc__init_buffer
76 #endif
77
78 #ifdef yy_flush_buffer
79 #define bc__flush_buffer_ALREADY_DEFINED
80 #else
81 #define yy_flush_buffer bc__flush_buffer
82 #endif
83
84 #ifdef yy_load_buffer_state
85 #define bc__load_buffer_state_ALREADY_DEFINED
86 #else
87 #define yy_load_buffer_state bc__load_buffer_state
88 #endif
89
90 #ifdef yy_switch_to_buffer
91 #define bc__switch_to_buffer_ALREADY_DEFINED
92 #else
93 #define yy_switch_to_buffer bc__switch_to_buffer
94 #endif
95
96 #ifdef yypush_buffer_state
97 #define bc_push_buffer_state_ALREADY_DEFINED
98 #else
99 #define yypush_buffer_state bc_push_buffer_state
100 #endif
101
102 #ifdef yypop_buffer_state
103 #define bc_pop_buffer_state_ALREADY_DEFINED
104 #else
105 #define yypop_buffer_state bc_pop_buffer_state
106 #endif
107
108 #ifdef yyensure_buffer_stack
109 #define bc_ensure_buffer_stack_ALREADY_DEFINED
110 #else
111 #define yyensure_buffer_stack bc_ensure_buffer_stack
112 #endif
113
114 #ifdef yylex
115 #define bc_lex_ALREADY_DEFINED
116 #else
117 #define yylex bc_lex
118 #endif
119
120 #ifdef yyrestart
121 #define bc_restart_ALREADY_DEFINED
122 #else
123 #define yyrestart bc_restart
124 #endif
125
126 #ifdef yylex_init
127 #define bc_lex_init_ALREADY_DEFINED
128 #else
129 #define yylex_init bc_lex_init
130 #endif
131
132 #ifdef yylex_init_extra
133 #define bc_lex_init_extra_ALREADY_DEFINED
134 #else
135 #define yylex_init_extra bc_lex_init_extra
136 #endif
137
138 #ifdef yylex_destroy
139 #define bc_lex_destroy_ALREADY_DEFINED
140 #else
141 #define yylex_destroy bc_lex_destroy
142 #endif
143
144 #ifdef yyget_debug
145 #define bc_get_debug_ALREADY_DEFINED
146 #else
147 #define yyget_debug bc_get_debug
148 #endif
149
150 #ifdef yyset_debug
151 #define bc_set_debug_ALREADY_DEFINED
152 #else
153 #define yyset_debug bc_set_debug
154 #endif
155
156 #ifdef yyget_extra
157 #define bc_get_extra_ALREADY_DEFINED
158 #else
159 #define yyget_extra bc_get_extra
160 #endif
161
162 #ifdef yyset_extra
163 #define bc_set_extra_ALREADY_DEFINED
164 #else
165 #define yyset_extra bc_set_extra
166 #endif
167
168 #ifdef yyget_in
169 #define bc_get_in_ALREADY_DEFINED
170 #else
171 #define yyget_in bc_get_in
172 #endif
173
174 #ifdef yyset_in
175 #define bc_set_in_ALREADY_DEFINED
176 #else
177 #define yyset_in bc_set_in
178 #endif
179
180 #ifdef yyget_out
181 #define bc_get_out_ALREADY_DEFINED
182 #else
183 #define yyget_out bc_get_out
184 #endif
185
186 #ifdef yyset_out
187 #define bc_set_out_ALREADY_DEFINED
188 #else
189 #define yyset_out bc_set_out
190 #endif
191
192 #ifdef yyget_leng
193 #define bc_get_leng_ALREADY_DEFINED
194 #else
195 #define yyget_leng bc_get_leng
196 #endif
197
198 #ifdef yyget_text
199 #define bc_get_text_ALREADY_DEFINED
200 #else
201 #define yyget_text bc_get_text
202 #endif
203
204 #ifdef yyget_lineno
205 #define bc_get_lineno_ALREADY_DEFINED
206 #else
207 #define yyget_lineno bc_get_lineno
208 #endif
209
210 #ifdef yyset_lineno
211 #define bc_set_lineno_ALREADY_DEFINED
212 #else
213 #define yyset_lineno bc_set_lineno
214 #endif
215
216 #ifdef yywrap
217 #define bc_wrap_ALREADY_DEFINED
218 #else
219 #define yywrap bc_wrap
220 #endif
221
222 #ifdef yyalloc
223 #define bc_alloc_ALREADY_DEFINED
224 #else
225 #define yyalloc bc_alloc
226 #endif
227
228 #ifdef yyrealloc
229 #define bc_realloc_ALREADY_DEFINED
230 #else
231 #define yyrealloc bc_realloc
232 #endif
233
234 #ifdef yyfree
235 #define bc_free_ALREADY_DEFINED
236 #else
237 #define yyfree bc_free
238 #endif
239
240 #ifdef yytext
241 #define bc_text_ALREADY_DEFINED
242 #else
243 #define yytext bc_text
244 #endif
245
246 #ifdef yyleng
247 #define bc_leng_ALREADY_DEFINED
248 #else
249 #define yyleng bc_leng
250 #endif
251
252 #ifdef yyin
253 #define bc_in_ALREADY_DEFINED
254 #else
255 #define yyin bc_in
256 #endif
257
258 #ifdef yyout
259 #define bc_out_ALREADY_DEFINED
260 #else
261 #define yyout bc_out
262 #endif
263
264 #ifdef yy_flex_debug
265 #define bc__flex_debug_ALREADY_DEFINED
266 #else
267 #define yy_flex_debug bc__flex_debug
268 #endif
269
270 #ifdef yylineno
271 #define bc_lineno_ALREADY_DEFINED
272 #else
273 #define yylineno bc_lineno
274 #endif
275
276 /* First, we deal with platform-specific or compiler-specific issues. */
277
278 /* begin standard C headers. */
279 #include <stdio.h>
280 #include <string.h>
281 #include <errno.h>
282 #include <stdlib.h>
283
284 /* end standard C headers. */
285
286 /* flex integer type definitions */
287
288 #ifndef FLEXINT_H
289 #define FLEXINT_H
290
291 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
292
293 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
294
295 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
296 * if you want the limit (max/min) macros for int types.
297 */
298 #ifndef __STDC_LIMIT_MACROS
299 #define __STDC_LIMIT_MACROS 1
300 #endif
301
302 #include <inttypes.h>
303 typedef int8_t flex_int8_t;
304 typedef uint8_t flex_uint8_t;
305 typedef int16_t flex_int16_t;
306 typedef uint16_t flex_uint16_t;
307 typedef int32_t flex_int32_t;
308 typedef uint32_t flex_uint32_t;
309 #else
310 typedef signed char flex_int8_t;
311 typedef short int flex_int16_t;
312 typedef int flex_int32_t;
313 typedef unsigned char flex_uint8_t;
314 typedef unsigned short int flex_uint16_t;
315 typedef unsigned int flex_uint32_t;
316
317 /* Limits of integral types. */
318 #ifndef INT8_MIN
319 #define INT8_MIN (-128)
320 #endif
321 #ifndef INT16_MIN
322 #define INT16_MIN (-32767-1)
323 #endif
324 #ifndef INT32_MIN
325 #define INT32_MIN (-2147483647-1)
326 #endif
327 #ifndef INT8_MAX
328 #define INT8_MAX (127)
329 #endif
330 #ifndef INT16_MAX
331 #define INT16_MAX (32767)
332 #endif
333 #ifndef INT32_MAX
334 #define INT32_MAX (2147483647)
335 #endif
336 #ifndef UINT8_MAX
337 #define UINT8_MAX (255U)
338 #endif
339 #ifndef UINT16_MAX
340 #define UINT16_MAX (65535U)
341 #endif
342 #ifndef UINT32_MAX
343 #define UINT32_MAX (4294967295U)
344 #endif
345
346 #ifndef SIZE_MAX
347 #define SIZE_MAX (~(size_t)0)
348 #endif
349
350 #endif /* ! C99 */
351
352 #endif /* ! FLEXINT_H */
353
354 /* begin standard C++ headers. */
355
356 /* TODO: this is always defined, so inline it */
357 #define yyconst const
358
359 #if defined(__GNUC__) && __GNUC__ >= 3
360 #define yynoreturn __attribute__((__noreturn__))
361 #else
362 #define yynoreturn
363 #endif
364
365 /* Returned upon end-of-file. */
366 #define YY_NULL 0
367
368 /* Promotes a possibly negative, possibly signed char to an
369 * integer in range [0..255] for use as an array index.
370 */
371 #define YY_SC_TO_UI(c) ((YY_CHAR) (c))
372
373 /* Enter a start condition. This macro really ought to take a parameter,
374 * but we do it the disgusting crufty way forced on us by the ()-less
375 * definition of BEGIN.
376 */
377 #define BEGIN (yy_start) = 1 + 2 *
378 /* Translate the current start state into a value that can be later handed
379 * to BEGIN to return to the state. The YYSTATE alias is for lex
380 * compatibility.
381 */
382 #define YY_START (((yy_start) - 1) / 2)
383 #define YYSTATE YY_START
384 /* Action number for EOF rule of a given start state. */
385 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
386 /* Special action meaning "start processing a new file". */
387 #define YY_NEW_FILE yyrestart( yyin )
388 #define YY_END_OF_BUFFER_CHAR 0
389
390 /* Size of default input buffer. */
391 #ifndef YY_BUF_SIZE
392 #ifdef __ia64__
393 /* On IA-64, the buffer size is 16k, not 8k.
394 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
395 * Ditto for the __ia64__ case accordingly.
396 */
397 #define YY_BUF_SIZE 32768
398 #else
399 #define YY_BUF_SIZE 16384
400 #endif /* __ia64__ */
401 #endif
402
403 /* The state buf must be large enough to hold one state per character in the main buffer.
404 */
405 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
406
407 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
408 #define YY_TYPEDEF_YY_BUFFER_STATE
409 typedef struct yy_buffer_state *YY_BUFFER_STATE;
410 #endif
411
412 #ifndef YY_TYPEDEF_YY_SIZE_T
413 #define YY_TYPEDEF_YY_SIZE_T
414 typedef size_t yy_size_t;
415 #endif
416
417 extern int yyleng;
418
419 extern FILE *yyin, *yyout;
420
421 #define EOB_ACT_CONTINUE_SCAN 0
422 #define EOB_ACT_END_OF_FILE 1
423 #define EOB_ACT_LAST_MATCH 2
424
425 #define YY_LESS_LINENO(n)
426 #define YY_LINENO_REWIND_TO(ptr)
427
428 /* Return all but the first "n" matched characters back to the input stream. */
429 #define yyless(n) \
430 do \
431 { \
432 /* Undo effects of setting up yytext. */ \
433 int yyless_macro_arg = (n); \
434 YY_LESS_LINENO(yyless_macro_arg);\
435 *yy_cp = (yy_hold_char); \
436 YY_RESTORE_YY_MORE_OFFSET \
437 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
438 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
439 } \
440 while ( 0 )
441 #define unput(c) yyunput( c, (yytext_ptr) )
442
443 #ifndef YY_STRUCT_YY_BUFFER_STATE
444 #define YY_STRUCT_YY_BUFFER_STATE
445 struct yy_buffer_state
446 {
447 FILE *yy_input_file;
448
449 char *yy_ch_buf; /* input buffer */
450 char *yy_buf_pos; /* current position in input buffer */
451
452 /* Size of input buffer in bytes, not including room for EOB
453 * characters.
454 */
455 int yy_buf_size;
456
457 /* Number of characters read into yy_ch_buf, not including EOB
458 * characters.
459 */
460 int yy_n_chars;
461
462 /* Whether we "own" the buffer - i.e., we know we created it,
463 * and can realloc() it to grow it, and should free() it to
464 * delete it.
465 */
466 int yy_is_our_buffer;
467
468 /* Whether this is an "interactive" input source; if so, and
469 * if we're using stdio for input, then we want to use getc()
470 * instead of fread(), to make sure we stop fetching input after
471 * each newline.
472 */
473 int yy_is_interactive;
474
475 /* Whether we're considered to be at the beginning of a line.
476 * If so, '^' rules will be active on the next match, otherwise
477 * not.
478 */
479 int yy_at_bol;
480
481 int yy_bs_lineno; /**< The line count. */
482 int yy_bs_column; /**< The column count. */
483
484 /* Whether to try to fill the input buffer when we reach the
485 * end of it.
486 */
487 int yy_fill_buffer;
488
489 int yy_buffer_status;
490
491 #define YY_BUFFER_NEW 0
492 #define YY_BUFFER_NORMAL 1
493 /* When an EOF's been seen but there's still some text to process
494 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
495 * shouldn't try reading from the input source any more. We might
496 * still have a bunch of tokens to match, though, because of
497 * possible backing-up.
498 *
499 * When we actually see the EOF, we change the status to "new"
500 * (via yyrestart()), so that the user can continue scanning by
501 * just pointing yyin at a new input file.
502 */
503 #define YY_BUFFER_EOF_PENDING 2
504
505 };
506 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
507
508 /* Stack of input buffers. */
509 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
510 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
511 static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
512
513 /* We provide macros for accessing buffer states in case in the
514 * future we want to put the buffer states in a more general
515 * "scanner state".
516 *
517 * Returns the top of the stack, or NULL.
518 */
519 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
520 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
521 : NULL)
522 /* Same as previous macro, but useful when we know that the buffer stack is not
523 * NULL or when we need an lvalue. For internal use only.
524 */
525 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
526
527 /* yy_hold_char holds the character lost when yytext is formed. */
528 static char yy_hold_char;
529 static int yy_n_chars; /* number of characters read into yy_ch_buf */
530 int yyleng;
531
532 /* Points to current character in buffer. */
533 static char *yy_c_buf_p = NULL;
534 static int yy_init = 0; /* whether we need to initialize */
535 static int yy_start = 0; /* start state number */
536
537 /* Flag which is used to allow yywrap()'s to do buffer switches
538 * instead of setting up a fresh yyin. A bit of a hack ...
539 */
540 static int yy_did_buffer_switch_on_eof;
541
542 void yyrestart ( FILE *input_file );
543 void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer );
544 YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size );
545 void yy_delete_buffer ( YY_BUFFER_STATE b );
546 void yy_flush_buffer ( YY_BUFFER_STATE b );
547 void yypush_buffer_state ( YY_BUFFER_STATE new_buffer );
548 void yypop_buffer_state ( void );
549
550 static void yyensure_buffer_stack ( void );
551 static void yy_load_buffer_state ( void );
552 static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file );
553 #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
554
555 YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size );
556 YY_BUFFER_STATE yy_scan_string ( const char *yy_str );
557 YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len );
558
559 void *yyalloc ( yy_size_t );
560 void *yyrealloc ( void *, yy_size_t );
561 void yyfree ( void * );
562
563 #define yy_new_buffer yy_create_buffer
564 #define yy_set_interactive(is_interactive) \
565 { \
566 if ( ! YY_CURRENT_BUFFER ){ \
567 yyensure_buffer_stack (); \
568 YY_CURRENT_BUFFER_LVALUE = \
569 yy_create_buffer( yyin, YY_BUF_SIZE ); \
570 } \
571 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
572 }
573 #define yy_set_bol(at_bol) \
574 { \
575 if ( ! YY_CURRENT_BUFFER ){\
576 yyensure_buffer_stack (); \
577 YY_CURRENT_BUFFER_LVALUE = \
578 yy_create_buffer( yyin, YY_BUF_SIZE ); \
579 } \
580 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
581 }
582 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
583
584 /* Begin user sect3 */
585
586 #define bc_wrap() (/*CONSTCOND*/1)
587 #define YY_SKIP_YYWRAP
588 typedef flex_uint8_t YY_CHAR;
589
590 FILE *yyin = NULL, *yyout = NULL;
591
592 typedef int yy_state_type;
593
594 extern int yylineno;
595 int yylineno = 1;
596
597 extern char *yytext;
598 #ifdef yytext_ptr
599 #undef yytext_ptr
600 #endif
601 #define yytext_ptr yytext
602
603 static yy_state_type yy_get_previous_state ( void );
604 static yy_state_type yy_try_NUL_trans ( yy_state_type current_state );
605 static int yy_get_next_buffer ( void );
606 static void yynoreturn yy_fatal_error ( const char* msg );
607
608 /* Done after the current pattern has been matched and before the
609 * corresponding action - sets up yytext.
610 */
611 #define YY_DO_BEFORE_ACTION \
612 (yytext_ptr) = yy_bp; \
613 yyleng = (int) (yy_cp - yy_bp); \
614 (yy_hold_char) = *yy_cp; \
615 *yy_cp = '\0'; \
616 (yy_c_buf_p) = yy_cp;
617 #define YY_NUM_RULES 81
618 #define YY_END_OF_BUFFER 82
619 /* This struct is not used in this scanner,
620 but its presence is necessary. */
621 struct yy_trans_info
622 {
623 flex_int32_t yy_verify;
624 flex_int32_t yy_nxt;
625 };
626 static const flex_int16_t yy_accept[266] =
627 { 0,
628 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
629 0, 0, 0, 0, 0, 0, 50, 50, 65, 65,
630 65, 65, 82, 79, 78, 75, 79, 73, 72, 68,
631 74, 71, 69, 80, 80, 18, 16, 17, 19, 76,
632 79, 68, 69, 76, 80, 80, 80, 28, 80, 80,
633 80, 52, 50, 51, 31, 32, 33, 34, 35, 36,
634 37, 38, 49, 30, 39, 40, 41, 42, 43, 44,
635 45, 46, 47, 48, 29, 64, 65, 61, 64, 66,
636 57, 56, 53, 58, 60, 66, 54, 64, 62, 53,
637 58, 54, 66, 79, 78, 70, 67, 68, 69, 74,
638
639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
640 0, 0, 15, 18, 17, 76, 76, 79, 0, 77,
641 79, 68, 69, 0, 0, 0, 0, 0, 0, 0,
642 0, 50, 49, 64, 65, 64, 0, 63, 64, 55,
643 53, 54, 60, 64, 53, 54, 0, 0, 0, 0,
644 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
645 77, 0, 77, 0, 24, 25, 26, 0, 20, 21,
646 22, 63, 0, 63, 64, 0, 0, 0, 0, 0,
647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
648 77, 27, 23, 63, 59, 59, 0, 0, 0, 0,
649
650 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
651 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
652 0, 0, 7, 0, 0, 0, 0, 0, 0, 6,
653 0, 0, 0, 0, 0, 0, 0, 0, 13, 0,
654 0, 0, 0, 0, 0, 0, 14, 0, 0, 3,
655 0, 2, 4, 11, 5, 0, 0, 10, 8, 0,
656 0, 0, 1, 12, 0
657 } ;
658
659 static const YY_CHAR yy_ec[256] =
660 { 0,
661 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
662 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
663 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
664 1, 2, 1, 5, 1, 6, 1, 1, 1, 1,
665 1, 1, 1, 7, 8, 1, 1, 9, 10, 11,
666 12, 13, 14, 15, 16, 17, 17, 18, 19, 1,
667 20, 1, 1, 21, 22, 23, 24, 25, 26, 27,
668 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
669 38, 39, 40, 41, 42, 43, 44, 38, 45, 38,
670 46, 47, 48, 1, 1, 1, 49, 50, 51, 52,
671
672 53, 27, 54, 55, 56, 57, 58, 59, 60, 61,
673 62, 63, 38, 64, 65, 66, 67, 68, 69, 38,
674 70, 38, 1, 1, 1, 1, 1, 1, 1, 1,
675 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
676 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
677 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
678 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
679 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
680 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
681 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
682
683 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
684 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
685 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
686 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
687 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
688 1, 1, 1, 1, 1
689 } ;
690
691 static const YY_CHAR yy_meta[71] =
692 { 0,
693 1, 2, 3, 4, 1, 5, 6, 6, 7, 7,
694 7, 7, 7, 7, 7, 7, 7, 1, 8, 6,
695 1, 7, 7, 7, 7, 7, 7, 9, 9, 9,
696 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
697 9, 9, 9, 9, 9, 8, 1, 2, 7, 7,
698 7, 7, 7, 9, 9, 9, 9, 9, 9, 9,
699 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
700 } ;
701
702 static const flex_int16_t yy_base[280] =
703 { 0,
704 0, 0, 68, 69, 115, 0, 0, 0, 36, 39,
705 534, 532, 149, 152, 0, 0, 221, 0, 291, 0,
706 361, 0, 549, 431, 75, 1152, 433, 1152, 80, 472,
707 0, 1152, 188, 1152, 503, 0, 1152, 0, 1152, 454,
708 456, 567, 431, 76, 52, 443, 48, 512, 63, 526,
709 158, 1152, 102, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
710 1152, 1152, 0, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
711 1152, 1152, 1152, 1152, 1152, 0, 105, 1152, 539, 0,
712 1152, 1152, 612, 0, 0, 1152, 586, 64, 1152, 657,
713 1152, 595, 165, 639, 188, 684, 637, 0, 0, 0,
714
715 466, 442, 471, 420, 488, 594, 521, 665, 650, 467,
716 607, 675, 1152, 0, 0, 694, 201, 715, 453, 721,
717 729, 0, 742, 488, 581, 599, 641, 649, 644, 659,
718 704, 206, 0, 0, 207, 761, 461, 0, 767, 0,
719 0, 778, 0, 716, 0, 0, 717, 713, 712, 737,
720 756, 462, 695, 774, 769, 771, 753, 779, 784, 780,
721 1152, 462, 829, 771, 1152, 1152, 1152, 773, 1152, 1152,
722 1152, 1152, 464, 836, 786, 807, 808, 804, 823, 830,
723 809, 814, 822, 827, 843, 840, 848, 815, 845, 863,
724 773, 1152, 1152, 811, 0, 1152, 854, 856, 855, 875,
725
726 860, 456, 869, 879, 877, 880, 885, 889, 454, 886,
727 888, 893, 896, 903, 910, 1152, 425, 911, 904, 925,
728 931, 927, 1152, 923, 935, 926, 423, 936, 930, 1152,
729 939, 950, 937, 957, 959, 422, 949, 964, 1152, 415,
730 968, 408, 405, 387, 385, 963, 1152, 979, 171, 1152,
731 169, 1152, 1152, 1152, 1152, 980, 981, 1152, 1152, 976,
732 147, 63, 1152, 1152, 1152, 1036, 1045, 1052, 1061, 1070,
733 1079, 1088, 1097, 1106, 1115, 1124, 91, 1133, 1142
734 } ;
735
736 static const flex_int16_t yy_def[280] =
737 { 0,
738 265, 1, 266, 266, 265, 5, 1, 1, 1, 1,
739 1, 1, 1, 1, 1, 1, 265, 17, 265, 19,
740 265, 21, 265, 265, 265, 265, 267, 265, 265, 265,
741 268, 265, 30, 265, 269, 270, 265, 271, 265, 272,
742 273, 272, 42, 272, 265, 265, 265, 265, 265, 265,
743 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
744 265, 265, 274, 265, 265, 265, 265, 265, 265, 265,
745 265, 265, 265, 265, 265, 275, 265, 265, 276, 277,
746 265, 265, 275, 275, 278, 265, 83, 275, 265, 265,
747 265, 90, 265, 265, 265, 267, 265, 30, 33, 268,
748
749 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
750 269, 269, 265, 270, 271, 272, 272, 273, 273, 265,
751 273, 42, 42, 265, 265, 265, 265, 265, 265, 265,
752 265, 265, 274, 275, 265, 276, 279, 275, 276, 277,
753 83, 83, 278, 275, 90, 92, 265, 269, 269, 269,
754 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
755 265, 273, 273, 265, 265, 265, 265, 265, 265, 265,
756 265, 265, 279, 276, 275, 265, 269, 269, 269, 269,
757 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
758 273, 265, 265, 279, 275, 265, 269, 269, 269, 269,
759
760 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
761 269, 269, 269, 269, 269, 265, 269, 269, 269, 269,
762 269, 269, 265, 269, 269, 269, 269, 269, 269, 265,
763 269, 269, 269, 269, 269, 269, 269, 269, 265, 269,
764 269, 269, 269, 269, 269, 269, 265, 269, 269, 265,
765 269, 265, 265, 265, 265, 269, 269, 265, 265, 269,
766 269, 269, 265, 265, 0, 265, 265, 265, 265, 265,
767 265, 265, 265, 265, 265, 265, 265, 265, 265
768 } ;
769
770 static const flex_int16_t yy_nxt[1223] =
771 { 0,
772 24, 25, 26, 25, 24, 27, 28, 29, 30, 30,
773 30, 30, 30, 30, 30, 30, 30, 24, 31, 32,
774 24, 33, 33, 33, 33, 33, 33, 34, 34, 34,
775 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
776 34, 34, 34, 34, 34, 35, 24, 34, 33, 33,
777 33, 33, 33, 34, 34, 34, 34, 34, 34, 34,
778 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
779 37, 37, 45, 124, 46, 45, 95, 46, 95, 47,
780 265, 265, 47, 127, 128, 144, 38, 38, 97, 97,
781 97, 97, 97, 97, 97, 97, 97, 140, 45, 46,
782
783 124, 45, 46, 132, 47, 132, 135, 47, 135, 127,
784 264, 128, 144, 39, 39, 40, 25, 26, 25, 41,
785 27, 28, 29, 42, 42, 42, 42, 42, 42, 42,
786 42, 42, 40, 31, 32, 40, 43, 43, 43, 43,
787 43, 43, 44, 44, 44, 44, 44, 44, 44, 44,
788 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
789 35, 40, 34, 43, 43, 43, 43, 43, 44, 44,
790 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
791 44, 44, 44, 44, 44, 49, 147, 50, 49, 95,
792 50, 95, 51, 131, 263, 51, 99, 99, 99, 99,
793
794 99, 99, 99, 99, 99, 265, 265, 132, 135, 132,
795 135, 49, 50, 147, 49, 50, 259, 51, 258, 131,
796 51, 52, 53, 54, 53, 52, 52, 52, 52, 55,
797 56, 57, 58, 59, 60, 61, 62, 52, 52, 63,
798 52, 64, 65, 66, 52, 52, 52, 52, 52, 52,
799 67, 52, 52, 68, 52, 52, 69, 70, 52, 71,
800 52, 72, 52, 73, 74, 52, 75, 52, 52, 65,
801 66, 52, 52, 52, 52, 52, 67, 52, 52, 68,
802 52, 52, 69, 70, 71, 52, 72, 52, 73, 74,
803 52, 76, 77, 78, 77, 79, 80, 81, 82, 83,
804
805 83, 83, 83, 83, 83, 83, 83, 83, 84, 85,
806 86, 76, 87, 87, 87, 87, 87, 87, 76, 76,
807 76, 76, 76, 76, 76, 76, 76, 88, 76, 76,
808 76, 76, 76, 76, 76, 76, 89, 76, 86, 87,
809 87, 87, 87, 87, 76, 76, 76, 76, 76, 76,
810 76, 76, 76, 88, 76, 76, 76, 76, 76, 76,
811 76, 86, 77, 78, 77, 86, 80, 81, 82, 90,
812 90, 90, 90, 90, 90, 90, 90, 90, 91, 85,
813 86, 86, 92, 92, 92, 92, 92, 92, 86, 86,
814 86, 86, 86, 86, 86, 86, 86, 93, 86, 86,
815
816 86, 86, 86, 86, 86, 86, 89, 86, 86, 92,
817 92, 92, 92, 92, 86, 86, 86, 86, 86, 86,
818 86, 86, 86, 93, 86, 86, 86, 86, 86, 86,
819 86, 94, 255, 94, 254, 94, 94, 94, 94, 123,
820 123, 123, 123, 123, 123, 123, 123, 123, 94, 150,
821 94, 94, 253, 94, 116, 252, 118, 161, 94, 94,
822 120, 118, 250, 148, 125, 172, 191, 113, 194, 247,
823 239, 116, 230, 118, 116, 150, 118, 94, 126, 94,
824 98, 98, 98, 98, 98, 98, 98, 98, 98, 113,
825 148, 125, 149, 99, 99, 99, 99, 99, 99, 162,
826
827 116, 223, 121, 216, 126, 157, 181, 173, 162, 113,
828 173, 151, 94, 113, 113, 164, 94, 94, 113, 149,
829 99, 99, 99, 99, 99, 102, 103, 104, 105, 94,
830 157, 181, 94, 106, 107, 113, 108, 109, 151, 110,
831 137, 164, 111, 138, 137, 112, 153, 129, 265, 48,
832 113, 48, 102, 103, 104, 105, 265, 137, 94, 106,
833 107, 130, 108, 109, 265, 110, 265, 111, 113, 265,
834 112, 265, 265, 153, 129, 122, 122, 122, 122, 122,
835 122, 122, 122, 122, 137, 139, 137, 130, 123, 123,
836 123, 123, 123, 123, 142, 142, 142, 142, 142, 142,
837
838 142, 142, 142, 146, 146, 146, 146, 146, 146, 146,
839 146, 146, 265, 265, 165, 123, 123, 123, 123, 123,
840 141, 141, 141, 141, 141, 141, 141, 141, 141, 152,
841 158, 265, 166, 142, 142, 142, 142, 142, 142, 94,
842 165, 113, 265, 94, 94, 97, 97, 97, 97, 97,
843 97, 97, 97, 97, 113, 152, 94, 158, 166, 94,
844 142, 142, 142, 142, 142, 145, 145, 145, 145, 145,
845 145, 145, 145, 145, 167, 265, 168, 169, 146, 146,
846 146, 146, 146, 146, 265, 94, 154, 265, 265, 265,
847 155, 156, 170, 265, 116, 265, 159, 113, 94, 94,
848
849 167, 265, 168, 169, 265, 146, 146, 146, 146, 146,
850 160, 116, 113, 154, 116, 118, 156, 155, 170, 120,
851 118, 94, 113, 159, 265, 94, 94, 265, 265, 118,
852 265, 265, 118, 163, 118, 118, 160, 171, 94, 182,
853 116, 94, 113, 175, 176, 265, 118, 177, 178, 118,
854 123, 123, 123, 123, 123, 123, 123, 123, 123, 113,
855 113, 121, 137, 171, 182, 138, 137, 94, 137, 175,
856 176, 174, 137, 177, 178, 121, 179, 161, 187, 137,
857 265, 265, 265, 265, 113, 137, 142, 142, 142, 142,
858 142, 142, 142, 142, 142, 180, 192, 183, 193, 265,
859
860 113, 179, 185, 113, 186, 187, 137, 139, 137, 190,
861 184, 195, 137, 139, 137, 172, 113, 188, 113, 162,
862 180, 113, 189, 192, 183, 193, 113, 113, 185, 118,
863 186, 113, 196, 120, 118, 190, 184, 137, 195, 197,
864 138, 137, 188, 198, 199, 265, 118, 189, 201, 118,
865 208, 113, 200, 202, 137, 113, 113, 173, 265, 196,
866 203, 113, 113, 204, 205, 197, 265, 265, 198, 113,
867 113, 199, 206, 201, 113, 121, 208, 113, 202, 200,
868 207, 137, 139, 137, 209, 203, 210, 113, 212, 204,
869 113, 205, 113, 211, 213, 113, 214, 265, 206, 265,
870
871 215, 113, 113, 113, 217, 265, 207, 113, 218, 209,
872 113, 224, 265, 210, 212, 220, 113, 219, 211, 213,
873 221, 222, 113, 214, 113, 215, 113, 113, 226, 227,
874 217, 225, 113, 113, 218, 113, 113, 228, 224, 229,
875 113, 220, 219, 113, 232, 231, 221, 222, 233, 238,
876 113, 113, 234, 241, 226, 227, 225, 113, 113, 235,
877 265, 265, 236, 228, 237, 229, 242, 240, 244, 232,
878 113, 231, 113, 113, 113, 233, 238, 113, 113, 234,
879 241, 245, 113, 113, 113, 235, 113, 236, 243, 248,
880 237, 246, 242, 240, 244, 249, 113, 113, 256, 251,
881
882 265, 265, 257, 260, 113, 265, 113, 262, 245, 261,
883 113, 113, 265, 243, 248, 113, 265, 246, 265, 265,
884 265, 249, 265, 113, 256, 251, 113, 113, 113, 257,
885 260, 265, 265, 262, 265, 261, 36, 36, 36, 36,
886 36, 36, 36, 36, 36, 96, 265, 265, 265, 96,
887 265, 96, 100, 100, 265, 100, 100, 100, 100, 100,
888 100, 101, 101, 101, 101, 101, 101, 101, 101, 101,
889 114, 114, 265, 114, 114, 114, 114, 265, 114, 115,
890 115, 265, 115, 115, 115, 115, 115, 115, 117, 265,
891 265, 265, 117, 265, 117, 265, 117, 119, 119, 265,
892
893 265, 119, 119, 119, 119, 119, 133, 133, 265, 133,
894 133, 133, 133, 133, 133, 134, 265, 265, 265, 265,
895 134, 134, 265, 134, 136, 136, 265, 265, 136, 136,
896 136, 136, 136, 143, 143, 265, 143, 143, 143, 143,
897 143, 143, 137, 137, 265, 265, 137, 137, 137, 137,
898 137, 23, 265, 265, 265, 265, 265, 265, 265, 265,
899 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
900 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
901 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
902 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
903
904 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
905 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
906 265, 265
907 } ;
908
909 static const flex_int16_t yy_chk[1223] =
910 { 0,
911 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
912 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
913 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
914 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
915 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
916 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
917 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
918 3, 4, 9, 45, 9, 10, 25, 10, 25, 9,
919 44, 44, 10, 47, 49, 88, 3, 4, 29, 29,
920 29, 29, 29, 29, 29, 29, 29, 277, 9, 9,
921
922 45, 10, 10, 53, 9, 53, 77, 10, 77, 47,
923 262, 49, 88, 3, 4, 5, 5, 5, 5, 5,
924 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
925 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
926 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
927 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
928 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
929 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
930 5, 5, 5, 5, 5, 13, 93, 13, 14, 95,
931 14, 95, 13, 51, 261, 14, 33, 33, 33, 33,
932
933 33, 33, 33, 33, 33, 117, 117, 132, 135, 132,
934 135, 13, 13, 93, 14, 14, 251, 13, 249, 51,
935 14, 17, 17, 17, 17, 17, 17, 17, 17, 17,
936 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
937 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
938 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
939 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
940 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
941 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
942 17, 19, 19, 19, 19, 19, 19, 19, 19, 19,
943
944 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
945 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
946 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
947 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
948 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
949 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
950 19, 21, 21, 21, 21, 21, 21, 21, 21, 21,
951 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
952 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
953 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
954
955 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
956 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
957 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
958 21, 24, 245, 27, 244, 24, 24, 27, 27, 43,
959 43, 43, 43, 43, 43, 43, 43, 43, 24, 104,
960 27, 24, 243, 27, 40, 242, 41, 119, 40, 40,
961 41, 41, 240, 102, 46, 137, 162, 104, 173, 236,
962 227, 40, 217, 41, 40, 104, 41, 24, 46, 27,
963 30, 30, 30, 30, 30, 30, 30, 30, 30, 102,
964 102, 46, 103, 30, 30, 30, 30, 30, 30, 119,
965
966 40, 209, 41, 202, 46, 110, 152, 137, 162, 152,
967 173, 105, 48, 101, 110, 124, 48, 48, 103, 103,
968 30, 30, 30, 30, 30, 35, 35, 35, 35, 48,
969 110, 152, 48, 35, 35, 105, 35, 35, 105, 35,
970 79, 124, 35, 79, 79, 35, 107, 50, 23, 12,
971 35, 11, 35, 35, 35, 35, 0, 79, 48, 35,
972 35, 50, 35, 35, 0, 35, 0, 35, 107, 0,
973 35, 42, 42, 107, 50, 42, 42, 42, 42, 42,
974 42, 42, 42, 42, 79, 79, 79, 50, 42, 42,
975 42, 42, 42, 42, 87, 87, 87, 87, 87, 87,
976
977 87, 87, 87, 92, 92, 92, 92, 92, 92, 92,
978 92, 92, 0, 0, 125, 42, 42, 42, 42, 42,
979 83, 83, 83, 83, 83, 83, 83, 83, 83, 106,
980 111, 0, 126, 83, 83, 83, 83, 83, 83, 94,
981 125, 106, 0, 94, 94, 97, 97, 97, 97, 97,
982 97, 97, 97, 97, 111, 106, 94, 111, 126, 94,
983 83, 83, 83, 83, 83, 90, 90, 90, 90, 90,
984 90, 90, 90, 90, 127, 0, 128, 129, 90, 90,
985 90, 90, 90, 90, 96, 94, 108, 0, 96, 96,
986 108, 109, 130, 0, 116, 0, 112, 109, 116, 116,
987
988 127, 96, 128, 129, 96, 90, 90, 90, 90, 90,
989 112, 116, 108, 108, 116, 118, 109, 108, 130, 118,
990 118, 120, 112, 112, 0, 120, 120, 0, 0, 121,
991 96, 0, 118, 121, 121, 118, 112, 131, 120, 153,
992 116, 120, 153, 144, 147, 0, 121, 148, 149, 121,
993 123, 123, 123, 123, 123, 123, 123, 123, 123, 149,
994 148, 118, 136, 131, 153, 136, 136, 120, 139, 144,
995 147, 139, 139, 148, 149, 121, 150, 191, 157, 136,
996 0, 0, 0, 0, 150, 139, 142, 142, 142, 142,
997 142, 142, 142, 142, 142, 151, 164, 154, 168, 0,
998
999 157, 150, 155, 151, 156, 157, 136, 136, 136, 160,
1000 154, 175, 139, 139, 139, 194, 155, 158, 156, 191,
1001 151, 154, 159, 164, 154, 168, 158, 160, 155, 163,
1002 156, 159, 176, 163, 163, 160, 154, 174, 175, 177,
1003 174, 174, 158, 178, 179, 0, 163, 159, 181, 163,
1004 188, 178, 180, 182, 174, 177, 181, 194, 0, 176,
1005 183, 182, 188, 184, 185, 177, 0, 0, 178, 183,
1006 179, 179, 186, 181, 184, 163, 188, 180, 182, 180,
1007 187, 174, 174, 174, 189, 183, 190, 186, 198, 184,
1008 185, 185, 189, 197, 199, 187, 200, 0, 186, 0,
1009
1010 201, 197, 199, 198, 203, 0, 187, 201, 204, 189,
1011 190, 210, 0, 190, 198, 206, 203, 205, 197, 199,
1012 207, 208, 200, 200, 205, 201, 204, 206, 212, 213,
1013 203, 211, 207, 210, 204, 211, 208, 214, 210, 215,
1014 212, 206, 205, 213, 219, 218, 207, 208, 220, 226,
1015 214, 219, 221, 229, 212, 213, 211, 215, 218, 222,
1016 0, 0, 224, 214, 225, 215, 231, 228, 233, 219,
1017 224, 218, 220, 226, 222, 220, 226, 229, 221, 221,
1018 229, 234, 225, 228, 233, 222, 231, 224, 232, 237,
1019 225, 235, 231, 228, 233, 238, 237, 232, 246, 241,
1020
1021 0, 0, 248, 256, 234, 0, 235, 260, 234, 257,
1022 246, 238, 0, 232, 237, 241, 0, 235, 0, 0,
1023 0, 238, 0, 260, 246, 241, 248, 256, 257, 248,
1024 256, 0, 0, 260, 0, 257, 266, 266, 266, 266,
1025 266, 266, 266, 266, 266, 267, 0, 0, 0, 267,
1026 0, 267, 268, 268, 0, 268, 268, 268, 268, 268,
1027 268, 269, 269, 269, 269, 269, 269, 269, 269, 269,
1028 270, 270, 0, 270, 270, 270, 270, 0, 270, 271,
1029 271, 0, 271, 271, 271, 271, 271, 271, 272, 0,
1030 0, 0, 272, 0, 272, 0, 272, 273, 273, 0,
1031
1032 0, 273, 273, 273, 273, 273, 274, 274, 0, 274,
1033 274, 274, 274, 274, 274, 275, 0, 0, 0, 0,
1034 275, 275, 0, 275, 276, 276, 0, 0, 276, 276,
1035 276, 276, 276, 278, 278, 0, 278, 278, 278, 278,
1036 278, 278, 279, 279, 0, 0, 279, 279, 279, 279,
1037 279, 265, 265, 265, 265, 265, 265, 265, 265, 265,
1038 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
1039 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
1040 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
1041 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
1042
1043 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
1044 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
1045 265, 265
1046 } ;
1047
1048 static yy_state_type yy_last_accepting_state;
1049 static char *yy_last_accepting_cpos;
1050
1051 extern int yy_flex_debug;
1052 int yy_flex_debug = 0;
1053
1054 /* The intent behind this definition is that it'll catch
1055 * any uses of REJECT which flex missed.
1056 */
1057 #define REJECT reject_used_but_not_detected
1058 #define yymore() yymore_used_but_not_detected
1059 #define YY_MORE_ADJ 0
1060 #define YY_RESTORE_YY_MORE_OFFSET
1061 char *yytext;
1062 #line 1 "bincfg/bincfg_lex_real.l"
1063 /* Scanner for INTVPC .CFG files */
1064 #define YY_NO_INPUT 1
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075 #line 24 "bincfg/bincfg_lex_real.l"
1076 /* Clang doesn't like the unreachable code in Flex's generated output. */
1077 #ifdef __clang__
1078 #pragma clang diagnostic ignored "-Wunreachable-code"
1079 #endif
1080
1081 /* put any #includes here */
1082 #include "config.h"
1083 #include "lzoe/lzoe.h"
1084 #include "bincfg/bincfg.h"
1085 #include "bincfg/bincfg_grmr.tab.h"
1086 #include "misc/types.h"
1087
1088 extern int bc_lex(void);
1089 int bc_line_no = 1;
1090 int bc_dec;
1091 uint32_t bc_hex;
1092 char *bc_txt = NULL;
1093 static unsigned bc_txt_alloc = 0;
1094
1095 typedef enum nlsm_t
1096 {
1097 NLSM_START = 0,
1098 NLSM_SAWCR,
1099 NLSM_SAWEOF,
1100 NLSM_SAWEOF2,
1101 NLSM_DIDEOF
1102 } nlsm_t;
1103
1104 static nlsm_t nlsm_state = NLSM_START;
1105
1106 /* Simple character-at-a-time state machine for reading input. It serves
1107 three purposes:
1108
1109 1. Convert Mac and Windows style NL to UNIX style.
1110 2. Insert an extra NL at EOF to ensure the last line is NL terminated
1111 3. Reads from an LZFILE* instead of a FILE*.
1112 */
nlsm_next_char(void)1113 static int nlsm_next_char(void)
1114 {
1115 int next_char = EOF;
1116
1117 again:
1118 if (nlsm_state == NLSM_SAWEOF)
1119 {
1120 nlsm_state = NLSM_SAWEOF2;
1121 return 10;
1122 }
1123 if (nlsm_state == NLSM_SAWEOF2)
1124 {
1125 nlsm_state = NLSM_DIDEOF;
1126 return EOF;
1127 }
1128
1129 next_char = lzoe_fgetc( (LZFILE *)bc_in );
1130
1131 if (nlsm_state == NLSM_DIDEOF)
1132 {
1133 if (next_char != EOF)
1134 nlsm_state = NLSM_START;
1135 else
1136 return EOF;
1137 }
1138
1139 if (next_char == EOF)
1140 {
1141 nlsm_state = NLSM_SAWEOF;
1142 return 10; /* extra CR at EOF */
1143 }
1144
1145 if (next_char == 13)
1146 {
1147 nlsm_state = NLSM_SAWCR;
1148 return 10;
1149 }
1150
1151 if (next_char == 10 && nlsm_state == NLSM_SAWCR)
1152 {
1153 nlsm_state = NLSM_START;
1154 goto again; /* eat LF after CR, since we converted CR to LF */
1155 }
1156
1157 nlsm_state = NLSM_START;
1158 return next_char;
1159 }
1160
1161
1162 #define YYTEXT_TO_BC_TXT(unquote) \
1163 do { \
1164 size_t uyyleng = yyleng > 0 ? yyleng : 0; \
1165 if (uyyleng >= bc_txt_alloc) \
1166 { \
1167 if (!bc_txt_alloc) \
1168 bc_txt_alloc = 256; \
1169 \
1170 while (bc_txt_alloc <= uyyleng) \
1171 bc_txt_alloc <<= 1; \
1172 \
1173 bc_txt = (char *)realloc(bc_txt, bc_txt_alloc); \
1174 \
1175 if (!bc_txt) \
1176 return TOK_ERROR_OOM; \
1177 } \
1178 \
1179 if (!unquote || uyyleng < 2) \
1180 strcpy(bc_txt, yytext); \
1181 else \
1182 strcpy(bc_txt, cfg_unquote_str(yytext)); \
1183 } while (0)
1184
1185 #define YY_INPUT(buf,result,max_size) \
1186 do { \
1187 int c_; \
1188 unsigned i_; \
1189 unsigned ms = max_size > 0 ? max_size : 0; \
1190 \
1191 i_ = 0; \
1192 while (i_ < ms && (c_ = nlsm_next_char()) != EOF) \
1193 buf[i_++] = c_; \
1194 \
1195 result = i_ > 0 ? i_ : YY_NULL; \
1196 \
1197 } while (0); \
1198
1199
1200 #line 1200 "bincfg/bincfg_lex.c"
1201 #line 1201 "bincfg/bincfg_lex.c"
1202
1203 #define INITIAL 0
1204 #define SEC_IGN 1
1205 #define SEC_VAR 2
1206 #define SEC_BSW 3
1207 #define SEC_MAP 4
1208 #define SEC_EBK 5
1209 #define SEC_ATR 6
1210 #define SEC_PRL 7
1211 #define SEC_MC0 8
1212 #define SEC_MC1 9
1213 #define SEC_MC2 10
1214
1215 #ifndef YY_NO_UNISTD_H
1216 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1217 * down here because we want the user's section 1 to have been scanned first.
1218 * The user has a chance to override it with an option.
1219 */
1220 #include <unistd.h>
1221 #endif
1222
1223 #ifndef YY_EXTRA_TYPE
1224 #define YY_EXTRA_TYPE void *
1225 #endif
1226
1227 static int yy_init_globals ( void );
1228
1229 /* Accessor methods to globals.
1230 These are made visible to non-reentrant scanners for convenience. */
1231
1232 int yylex_destroy ( void );
1233
1234 int yyget_debug ( void );
1235
1236 void yyset_debug ( int debug_flag );
1237
1238 YY_EXTRA_TYPE yyget_extra ( void );
1239
1240 void yyset_extra ( YY_EXTRA_TYPE user_defined );
1241
1242 FILE *yyget_in ( void );
1243
1244 void yyset_in ( FILE * _in_str );
1245
1246 FILE *yyget_out ( void );
1247
1248 void yyset_out ( FILE * _out_str );
1249
1250 int yyget_leng ( void );
1251
1252 char *yyget_text ( void );
1253
1254 int yyget_lineno ( void );
1255
1256 void yyset_lineno ( int _line_number );
1257
1258 /* Macros after this point can all be overridden by user definitions in
1259 * section 1.
1260 */
1261
1262 #ifndef YY_SKIP_YYWRAP
1263 #ifdef __cplusplus
1264 extern "C" int yywrap ( void );
1265 #else
1266 extern int yywrap ( void );
1267 #endif
1268 #endif
1269
1270 #ifndef YY_NO_UNPUT
1271
1272 #endif
1273
1274 #ifndef yytext_ptr
1275 static void yy_flex_strncpy ( char *, const char *, int );
1276 #endif
1277
1278 #ifdef YY_NEED_STRLEN
1279 static int yy_flex_strlen ( const char * );
1280 #endif
1281
1282 #ifndef YY_NO_INPUT
1283 #ifdef __cplusplus
1284 static int yyinput ( void );
1285 #else
1286 static int input ( void );
1287 #endif
1288
1289 #endif
1290
1291 /* Amount of stuff to slurp up with each read. */
1292 #ifndef YY_READ_BUF_SIZE
1293 #ifdef __ia64__
1294 /* On IA-64, the buffer size is 16k, not 8k */
1295 #define YY_READ_BUF_SIZE 16384
1296 #else
1297 #define YY_READ_BUF_SIZE 8192
1298 #endif /* __ia64__ */
1299 #endif
1300
1301 /* Copy whatever the last rule matched to the standard output. */
1302 #ifndef ECHO
1303 /* This used to be an fputs(), but since the string might contain NUL's,
1304 * we now use fwrite().
1305 */
1306 #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
1307 #endif
1308
1309 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1310 * is returned in "result".
1311 */
1312 #ifndef YY_INPUT
1313 #define YY_INPUT(buf,result,max_size) \
1314 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1315 { \
1316 int c = '*'; \
1317 int n; \
1318 for ( n = 0; n < max_size && \
1319 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1320 buf[n] = (char) c; \
1321 if ( c == '\n' ) \
1322 buf[n++] = (char) c; \
1323 if ( c == EOF && ferror( yyin ) ) \
1324 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1325 result = n; \
1326 } \
1327 else \
1328 { \
1329 errno=0; \
1330 while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
1331 { \
1332 if( errno != EINTR) \
1333 { \
1334 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1335 break; \
1336 } \
1337 errno=0; \
1338 clearerr(yyin); \
1339 } \
1340 }\
1341 \
1342
1343 #endif
1344
1345 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1346 * we don't want an extra ';' after the "return" because that will cause
1347 * some compilers to complain about unreachable statements.
1348 */
1349 #ifndef yyterminate
1350 #define yyterminate() return YY_NULL
1351 #endif
1352
1353 /* Number of entries by which start-condition stack grows. */
1354 #ifndef YY_START_STACK_INCR
1355 #define YY_START_STACK_INCR 25
1356 #endif
1357
1358 /* Report a fatal error. */
1359 #ifndef YY_FATAL_ERROR
1360 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1361 #endif
1362
1363 /* end tables serialization structures and prototypes */
1364
1365 /* Default declaration of generated scanner - a define so the user can
1366 * easily add parameters.
1367 */
1368 #ifndef YY_DECL
1369 #define YY_DECL_IS_OURS 1
1370
1371 extern int yylex (void);
1372
1373 #define YY_DECL int yylex (void)
1374 #endif /* !YY_DECL */
1375
1376 /* Code executed at the beginning of each rule, after yytext and yyleng
1377 * have been set up.
1378 */
1379 #ifndef YY_USER_ACTION
1380 #define YY_USER_ACTION
1381 #endif
1382
1383 /* Code executed at the end of each rule. */
1384 #ifndef YY_BREAK
1385 #define YY_BREAK /*LINTED*/break;
1386 #endif
1387
1388 #define YY_RULE_SETUP \
1389 YY_USER_ACTION
1390
1391 /** The main scanner function which does all the work.
1392 */
1393 YY_DECL
1394 {
1395 yy_state_type yy_current_state;
1396 char *yy_cp, *yy_bp;
1397 int yy_act;
1398
1399 if ( !(yy_init) )
1400 {
1401 (yy_init) = 1;
1402
1403 #ifdef YY_USER_INIT
1404 YY_USER_INIT;
1405 #endif
1406
1407 if ( ! (yy_start) )
1408 (yy_start) = 1; /* first start state */
1409
1410 if ( ! yyin )
1411 yyin = stdin;
1412
1413 if ( ! yyout )
1414 yyout = stdout;
1415
1416 if ( ! YY_CURRENT_BUFFER ) {
1417 yyensure_buffer_stack ();
1418 YY_CURRENT_BUFFER_LVALUE =
1419 yy_create_buffer( yyin, YY_BUF_SIZE );
1420 }
1421
1422 yy_load_buffer_state( );
1423 }
1424
1425 {
1426 #line 153 "bincfg/bincfg_lex_real.l"
1427
1428 #line 155 "bincfg/bincfg_lex_real.l"
1429
1430
1431 /* -------------------------------------------------------------------- */
1432 /* Rules for identifying section headers. */
1433 /* -------------------------------------------------------------------- */
1434
1435 #line 1435 "bincfg/bincfg_lex.c"
1436
1437 while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
1438 {
1439 yy_cp = (yy_c_buf_p);
1440
1441 /* Support of yytext. */
1442 *yy_cp = (yy_hold_char);
1443
1444 /* yy_bp points to the position in yy_ch_buf of the start of
1445 * the current run.
1446 */
1447 yy_bp = yy_cp;
1448
1449 yy_current_state = (yy_start);
1450 yy_match:
1451 do
1452 {
1453 YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
1454 if ( yy_accept[yy_current_state] )
1455 {
1456 (yy_last_accepting_state) = yy_current_state;
1457 (yy_last_accepting_cpos) = yy_cp;
1458 }
1459 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1460 {
1461 yy_current_state = (int) yy_def[yy_current_state];
1462 if ( yy_current_state >= 266 )
1463 yy_c = yy_meta[yy_c];
1464 }
1465 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
1466 ++yy_cp;
1467 }
1468 while ( yy_current_state != 265 );
1469 yy_cp = (yy_last_accepting_cpos);
1470 yy_current_state = (yy_last_accepting_state);
1471
1472 yy_find_action:
1473 yy_act = yy_accept[yy_current_state];
1474
1475 YY_DO_BEFORE_ACTION;
1476
1477 do_action: /* This label is used only to access EOF actions. */
1478
1479 switch ( yy_act )
1480 { /* beginning of action switch */
1481 case 0: /* must back up */
1482 /* undo the effects of YY_DO_BEFORE_ACTION */
1483 *yy_cp = (yy_hold_char);
1484 yy_cp = (yy_last_accepting_cpos);
1485 yy_current_state = (yy_last_accepting_state);
1486 goto yy_find_action;
1487
1488 case 1:
1489 YY_RULE_SETUP
1490 #line 161 "bincfg/bincfg_lex_real.l"
1491 { BEGIN(SEC_BSW); return TOK_SEC_BANKSWITCH; }
1492 YY_BREAK
1493 case 2:
1494 YY_RULE_SETUP
1495 #line 162 "bincfg/bincfg_lex_real.l"
1496 { BEGIN(SEC_MAP); return TOK_SEC_MAPPING; }
1497 YY_BREAK
1498 case 3:
1499 YY_RULE_SETUP
1500 #line 163 "bincfg/bincfg_lex_real.l"
1501 { BEGIN(SEC_EBK); return TOK_SEC_ECSBANK; }
1502 YY_BREAK
1503 case 4:
1504 YY_RULE_SETUP
1505 #line 164 "bincfg/bincfg_lex_real.l"
1506 { BEGIN(SEC_ATR); return TOK_SEC_MEMATTR; }
1507 YY_BREAK
1508 case 5:
1509 YY_RULE_SETUP
1510 #line 165 "bincfg/bincfg_lex_real.l"
1511 { BEGIN(SEC_PRL); return TOK_SEC_PRELOAD; }
1512 YY_BREAK
1513 case 6:
1514 YY_RULE_SETUP
1515 #line 167 "bincfg/bincfg_lex_real.l"
1516 { BEGIN(SEC_MC0); return TOK_SEC_MACRO; }
1517 YY_BREAK
1518 case 7:
1519 YY_RULE_SETUP
1520 #line 169 "bincfg/bincfg_lex_real.l"
1521 { BEGIN(SEC_VAR); return TOK_SEC_VARS; }
1522 YY_BREAK
1523 case 8:
1524 YY_RULE_SETUP
1525 #line 170 "bincfg/bincfg_lex_real.l"
1526 { BEGIN(SEC_VAR); return TOK_SEC_JOYSTICK; }
1527 YY_BREAK
1528 case 9:
1529 YY_RULE_SETUP
1530 #line 171 "bincfg/bincfg_lex_real.l"
1531 { BEGIN(SEC_VAR); return TOK_SEC_KEYS; }
1532 YY_BREAK
1533 case 10:
1534 YY_RULE_SETUP
1535 #line 172 "bincfg/bincfg_lex_real.l"
1536 { BEGIN(SEC_VAR); return TOK_SEC_CAPSLOCK; }
1537 YY_BREAK
1538 case 11:
1539 YY_RULE_SETUP
1540 #line 173 "bincfg/bincfg_lex_real.l"
1541 { BEGIN(SEC_VAR); return TOK_SEC_NUMLOCK; }
1542 YY_BREAK
1543 case 12:
1544 YY_RULE_SETUP
1545 #line 174 "bincfg/bincfg_lex_real.l"
1546 { BEGIN(SEC_VAR); return TOK_SEC_SCROLLLOCK; }
1547 YY_BREAK
1548 case 13:
1549 YY_RULE_SETUP
1550 #line 176 "bincfg/bincfg_lex_real.l"
1551 { BEGIN(SEC_IGN); return TOK_SEC_DISASM; }
1552 YY_BREAK
1553 case 14:
1554 YY_RULE_SETUP
1555 #line 177 "bincfg/bincfg_lex_real.l"
1556 { BEGIN(SEC_IGN); return TOK_SEC_VOICES; }
1557 YY_BREAK
1558 case 15:
1559 /* rule 15 can match eol */
1560 YY_RULE_SETUP
1561 #line 179 "bincfg/bincfg_lex_real.l"
1562 { BEGIN(SEC_IGN); return TOK_SEC_UNKNOWN; }
1563 YY_BREAK
1564
1565 /* -------------------------------------------------------------------- */
1566 /* Mini-scanner for ignored sections: Just eat them right up. */
1567 /* -------------------------------------------------------------------- */
1568
1569 case YY_STATE_EOF(SEC_IGN):
1570 #line 186 "bincfg/bincfg_lex_real.l"
1571 { BEGIN(INITIAL); return '\n'; }
1572 YY_BREAK
1573 case 16:
1574 /* rule 16 can match eol */
1575 YY_RULE_SETUP
1576 #line 187 "bincfg/bincfg_lex_real.l"
1577 { bc_line_no++; /* eat newlines */ }
1578 YY_BREAK
1579 case 17:
1580 YY_RULE_SETUP
1581 #line 188 "bincfg/bincfg_lex_real.l"
1582 { /* eat comments */ }
1583 YY_BREAK
1584 case 18:
1585 YY_RULE_SETUP
1586 #line 189 "bincfg/bincfg_lex_real.l"
1587 { /* eat non-section openers. */ }
1588 YY_BREAK
1589 case 19:
1590 YY_RULE_SETUP
1591 #line 190 "bincfg/bincfg_lex_real.l"
1592 { yyless(0); BEGIN(INITIAL); return '\n'; }
1593 YY_BREAK
1594
1595 /* -------------------------------------------------------------------- */
1596 /* Keywords that are only valid in memory-attribute section. */
1597 /* -------------------------------------------------------------------- */
1598
1599 case 20:
1600 YY_RULE_SETUP
1601 #line 197 "bincfg/bincfg_lex_real.l"
1602 { return TOK_RAM; }
1603 YY_BREAK
1604 case 21:
1605 YY_RULE_SETUP
1606 #line 198 "bincfg/bincfg_lex_real.l"
1607 { return TOK_ROM; }
1608 YY_BREAK
1609 case 22:
1610 YY_RULE_SETUP
1611 #line 199 "bincfg/bincfg_lex_real.l"
1612 { return TOK_WOM; }
1613 YY_BREAK
1614 case 23:
1615 YY_RULE_SETUP
1616 #line 200 "bincfg/bincfg_lex_real.l"
1617 { return TOK_PAGE; }
1618 YY_BREAK
1619
1620 /* -------------------------------------------------------------------- */
1621 /* Keywords that are only valid in the mapping section. */
1622 /* -------------------------------------------------------------------- */
1623
1624 case 24:
1625 YY_RULE_SETUP
1626 #line 207 "bincfg/bincfg_lex_real.l"
1627 { return TOK_RAM; }
1628 YY_BREAK
1629 case 25:
1630 YY_RULE_SETUP
1631 #line 208 "bincfg/bincfg_lex_real.l"
1632 { return TOK_ROM; }
1633 YY_BREAK
1634 case 26:
1635 YY_RULE_SETUP
1636 #line 209 "bincfg/bincfg_lex_real.l"
1637 { return TOK_WOM; }
1638 YY_BREAK
1639 case 27:
1640 YY_RULE_SETUP
1641 #line 210 "bincfg/bincfg_lex_real.l"
1642 { return TOK_PAGE; }
1643 YY_BREAK
1644
1645 /* -------------------------------------------------------------------- */
1646 /* Keywords that are only valid in the ecsbank section. */
1647 /* -------------------------------------------------------------------- */
1648
1649 case 28:
1650 YY_RULE_SETUP
1651 #line 217 "bincfg/bincfg_lex_real.l"
1652 { return ':'; }
1653 YY_BREAK
1654
1655 /* -------------------------------------------------------------------- */
1656 /* Keywords that are only valid in the macro section. */
1657 /* -------------------------------------------------------------------- */
1658
1659 case 29:
1660 YY_RULE_SETUP
1661 #line 224 "bincfg/bincfg_lex_real.l"
1662 { yyless(0); BEGIN(INITIAL); /*]*/ }
1663 YY_BREAK
1664 case 30:
1665 YY_RULE_SETUP
1666 #line 225 "bincfg/bincfg_lex_real.l"
1667 { return TOK_MAC_QUIET; }
1668 YY_BREAK
1669 case 31:
1670 YY_RULE_SETUP
1671 #line 226 "bincfg/bincfg_lex_real.l"
1672 { BEGIN(SEC_MC2); bc_hex=0; return TOK_MAC_REG; }
1673 YY_BREAK
1674 case 32:
1675 YY_RULE_SETUP
1676 #line 227 "bincfg/bincfg_lex_real.l"
1677 { BEGIN(SEC_MC2); bc_hex=1; return TOK_MAC_REG; }
1678 YY_BREAK
1679 case 33:
1680 YY_RULE_SETUP
1681 #line 228 "bincfg/bincfg_lex_real.l"
1682 { BEGIN(SEC_MC2); bc_hex=2; return TOK_MAC_REG; }
1683 YY_BREAK
1684 case 34:
1685 YY_RULE_SETUP
1686 #line 229 "bincfg/bincfg_lex_real.l"
1687 { BEGIN(SEC_MC1); bc_hex=3; return TOK_MAC_REG; }
1688 YY_BREAK
1689 case 35:
1690 YY_RULE_SETUP
1691 #line 230 "bincfg/bincfg_lex_real.l"
1692 { BEGIN(SEC_MC2); bc_hex=4; return TOK_MAC_REG; }
1693 YY_BREAK
1694 case 36:
1695 YY_RULE_SETUP
1696 #line 231 "bincfg/bincfg_lex_real.l"
1697 { BEGIN(SEC_MC2); bc_hex=5; return TOK_MAC_REG; }
1698 YY_BREAK
1699 case 37:
1700 YY_RULE_SETUP
1701 #line 232 "bincfg/bincfg_lex_real.l"
1702 { BEGIN(SEC_MC2); bc_hex=6; return TOK_MAC_REG; }
1703 YY_BREAK
1704 case 38:
1705 YY_RULE_SETUP
1706 #line 233 "bincfg/bincfg_lex_real.l"
1707 { BEGIN(SEC_MC2); bc_hex=7; return TOK_MAC_REG; }
1708 YY_BREAK
1709 case 39:
1710 YY_RULE_SETUP
1711 #line 234 "bincfg/bincfg_lex_real.l"
1712 { BEGIN(SEC_MC2); return TOK_MAC_AHEAD; }
1713 YY_BREAK
1714 case 40:
1715 YY_RULE_SETUP
1716 #line 235 "bincfg/bincfg_lex_real.l"
1717 { BEGIN(SEC_MC2); return TOK_MAC_BLANK; }
1718 YY_BREAK
1719 case 41:
1720 YY_RULE_SETUP
1721 #line 236 "bincfg/bincfg_lex_real.l"
1722 { BEGIN(SEC_MC2); return TOK_MAC_INSPECT; }
1723 YY_BREAK
1724 case 42:
1725 YY_RULE_SETUP
1726 #line 237 "bincfg/bincfg_lex_real.l"
1727 { BEGIN(SEC_MC1); return TOK_MAC_LOAD; }
1728 YY_BREAK
1729 case 43:
1730 YY_RULE_SETUP
1731 #line 238 "bincfg/bincfg_lex_real.l"
1732 { BEGIN(SEC_MC2); return TOK_MAC_RUNTO; }
1733 YY_BREAK
1734 case 44:
1735 YY_RULE_SETUP
1736 #line 239 "bincfg/bincfg_lex_real.l"
1737 { BEGIN(SEC_MC2); return TOK_MAC_POKE; }
1738 YY_BREAK
1739 case 45:
1740 YY_RULE_SETUP
1741 #line 240 "bincfg/bincfg_lex_real.l"
1742 { BEGIN(SEC_MC2); return TOK_MAC_RUN; }
1743 YY_BREAK
1744 case 46:
1745 YY_RULE_SETUP
1746 #line 241 "bincfg/bincfg_lex_real.l"
1747 { BEGIN(SEC_MC2); return TOK_MAC_TRACE; }
1748 YY_BREAK
1749 case 47:
1750 YY_RULE_SETUP
1751 #line 242 "bincfg/bincfg_lex_real.l"
1752 { BEGIN(SEC_MC2); return TOK_MAC_VIEW; }
1753 YY_BREAK
1754 case 48:
1755 YY_RULE_SETUP
1756 #line 243 "bincfg/bincfg_lex_real.l"
1757 { BEGIN(SEC_MC1); return TOK_MAC_WATCH; }
1758 YY_BREAK
1759 case 49:
1760 YY_RULE_SETUP
1761 #line 244 "bincfg/bincfg_lex_real.l"
1762 { /* ignore comments. */ }
1763 YY_BREAK
1764 case 50:
1765 YY_RULE_SETUP
1766 #line 245 "bincfg/bincfg_lex_real.l"
1767 { /* ignore whitespace. */ }
1768 YY_BREAK
1769 case 51:
1770 /* rule 51 can match eol */
1771 YY_RULE_SETUP
1772 #line 246 "bincfg/bincfg_lex_real.l"
1773 { bc_line_no++; return '\n'; }
1774 YY_BREAK
1775 case 52:
1776 YY_RULE_SETUP
1777 #line 247 "bincfg/bincfg_lex_real.l"
1778 { /* ignore unknown lines. */ }
1779 YY_BREAK
1780
1781 /* -------------------------------------------------------------------- */
1782 /* Special secondary, tertiary states for macro processing. Grrr... */
1783 /* We enter this state after parsing the first 'name' on a line. */
1784 /* This keeps hex ranges that aren't $ adorned from turning into */
1785 /* TOK_NAMEs. Too much of the grammar comes into the lexer. :-P */
1786 /* -------------------------------------------------------------------- */
1787
1788 case 53:
1789 YY_RULE_SETUP
1790 #line 258 "bincfg/bincfg_lex_real.l"
1791 {
1792 BEGIN(SEC_MC2);
1793 bc_dec = atoi(yytext);
1794 sscanf(yytext , "%x", &bc_hex);
1795 YYTEXT_TO_BC_TXT(0);
1796 return TOK_DEC;
1797 }
1798 YY_BREAK
1799 case 54:
1800 YY_RULE_SETUP
1801 #line 265 "bincfg/bincfg_lex_real.l"
1802 {
1803 BEGIN(SEC_MC2);
1804 bc_dec = atoi(yytext);
1805 sscanf(yytext , "%x", &bc_hex);
1806 YYTEXT_TO_BC_TXT(0);
1807 return TOK_HEX;
1808 }
1809 YY_BREAK
1810 case 55:
1811 YY_RULE_SETUP
1812 #line 272 "bincfg/bincfg_lex_real.l"
1813 {
1814 BEGIN(SEC_MC2);
1815 bc_dec = atoi(yytext + 1);
1816 sscanf(yytext + 1, "%x", &bc_hex);
1817 YYTEXT_TO_BC_TXT(0);
1818 return TOK_HEX;
1819 }
1820 YY_BREAK
1821 case 56:
1822 YY_RULE_SETUP
1823 #line 279 "bincfg/bincfg_lex_real.l"
1824 { BEGIN(SEC_MC2); return '-'; }
1825 YY_BREAK
1826 case 57:
1827 YY_RULE_SETUP
1828 #line 280 "bincfg/bincfg_lex_real.l"
1829 { BEGIN(SEC_MC2); return ','; }
1830 YY_BREAK
1831 case 58:
1832 YY_RULE_SETUP
1833 #line 281 "bincfg/bincfg_lex_real.l"
1834 { BEGIN(SEC_MC2); return ':'; }
1835 YY_BREAK
1836 case 59:
1837 YY_RULE_SETUP
1838 #line 282 "bincfg/bincfg_lex_real.l"
1839 { BEGIN(SEC_MC2); return TOK_PAGE; }
1840 YY_BREAK
1841 case 60:
1842 YY_RULE_SETUP
1843 #line 283 "bincfg/bincfg_lex_real.l"
1844 { BEGIN(SEC_MC2); /* eat comments. */ }
1845 YY_BREAK
1846 case 61:
1847 /* rule 61 can match eol */
1848 YY_RULE_SETUP
1849 #line 284 "bincfg/bincfg_lex_real.l"
1850 { bc_line_no++; BEGIN(SEC_MC0); return '\n'; }
1851 YY_BREAK
1852 case 62:
1853 YY_RULE_SETUP
1854 #line 285 "bincfg/bincfg_lex_real.l"
1855 { yyless(0); BEGIN(INITIAL); /*]*/ }
1856 YY_BREAK
1857 case 63:
1858 YY_RULE_SETUP
1859 #line 287 "bincfg/bincfg_lex_real.l"
1860 {
1861 BEGIN(SEC_MC2);
1862 YYTEXT_TO_BC_TXT(1);
1863 return TOK_STRING;
1864 }
1865 YY_BREAK
1866 case 64:
1867 YY_RULE_SETUP
1868 #line 293 "bincfg/bincfg_lex_real.l"
1869 {
1870 BEGIN(SEC_MC2);
1871 YYTEXT_TO_BC_TXT(0);
1872 return TOK_NAME;
1873 }
1874 YY_BREAK
1875 case 65:
1876 YY_RULE_SETUP
1877 #line 299 "bincfg/bincfg_lex_real.l"
1878 { /* ignore whitespace. */ }
1879 YY_BREAK
1880 case 66:
1881 YY_RULE_SETUP
1882 #line 300 "bincfg/bincfg_lex_real.l"
1883 { YYTEXT_TO_BC_TXT(0); return TOK_ERROR_BAD; }
1884 YY_BREAK
1885
1886 /* -------------------------------------------------------------------- */
1887 /* Main scanner with common rules across most sections. */
1888 /* -------------------------------------------------------------------- */
1889
1890 case 67:
1891 YY_RULE_SETUP
1892 #line 307 "bincfg/bincfg_lex_real.l"
1893 {
1894 bc_dec = atoi(yytext);
1895 sscanf(yytext + 1, "%x", &bc_hex);
1896 YYTEXT_TO_BC_TXT(0);
1897 return TOK_DECONLY;
1898 }
1899 YY_BREAK
1900 case 68:
1901 YY_RULE_SETUP
1902 #line 313 "bincfg/bincfg_lex_real.l"
1903 {
1904 bc_dec = atoi(yytext);
1905 sscanf(yytext , "%x", &bc_hex);
1906 YYTEXT_TO_BC_TXT(0);
1907 return TOK_DEC;
1908 }
1909 YY_BREAK
1910 case 69:
1911 YY_RULE_SETUP
1912 #line 319 "bincfg/bincfg_lex_real.l"
1913 {
1914 bc_dec = atoi(yytext);
1915 sscanf(yytext , "%x", &bc_hex);
1916 YYTEXT_TO_BC_TXT(0);
1917 return TOK_HEX;
1918 }
1919 YY_BREAK
1920 case 70:
1921 YY_RULE_SETUP
1922 #line 325 "bincfg/bincfg_lex_real.l"
1923 {
1924 bc_dec = atoi(yytext + 1);
1925 sscanf(yytext + 1, "%x", &bc_hex);
1926 YYTEXT_TO_BC_TXT(0);
1927 return TOK_HEX;
1928 }
1929 YY_BREAK
1930 case 71:
1931 YY_RULE_SETUP
1932 #line 331 "bincfg/bincfg_lex_real.l"
1933 { return '='; }
1934 YY_BREAK
1935 case 72:
1936 YY_RULE_SETUP
1937 #line 332 "bincfg/bincfg_lex_real.l"
1938 { return '-'; }
1939 YY_BREAK
1940 case 73:
1941 YY_RULE_SETUP
1942 #line 333 "bincfg/bincfg_lex_real.l"
1943 { return ','; }
1944 YY_BREAK
1945 case 74:
1946 YY_RULE_SETUP
1947 #line 334 "bincfg/bincfg_lex_real.l"
1948 { /* eat comments. */ }
1949 YY_BREAK
1950 case 75:
1951 /* rule 75 can match eol */
1952 YY_RULE_SETUP
1953 #line 335 "bincfg/bincfg_lex_real.l"
1954 { bc_line_no++;
1955 if (YY_START == SEC_MC1) BEGIN(SEC_MC0);
1956 return '\n'; /* comments and newlines are same */
1957 }
1958 YY_BREAK
1959 case 76:
1960 YY_RULE_SETUP
1961 #line 340 "bincfg/bincfg_lex_real.l"
1962 {
1963 YYTEXT_TO_BC_TXT(0);
1964 return TOK_NAME;
1965 }
1966 YY_BREAK
1967 case 77:
1968 YY_RULE_SETUP
1969 #line 345 "bincfg/bincfg_lex_real.l"
1970 {
1971 YYTEXT_TO_BC_TXT(1);
1972 return TOK_STRING;
1973 }
1974 YY_BREAK
1975 case 78:
1976 YY_RULE_SETUP
1977 #line 350 "bincfg/bincfg_lex_real.l"
1978 { /* eat whitespace */ }
1979 YY_BREAK
1980 case 79:
1981 YY_RULE_SETUP
1982 #line 351 "bincfg/bincfg_lex_real.l"
1983 {
1984 YYTEXT_TO_BC_TXT(0);
1985 #ifdef DEBUG
1986 fprintf(stderr, "BAD2: %d\n", yytext[0]);
1987 #endif
1988 return TOK_ERROR_BAD;
1989 }
1990 YY_BREAK
1991 case 80:
1992 YY_RULE_SETUP
1993 #line 358 "bincfg/bincfg_lex_real.l"
1994 {
1995 YYTEXT_TO_BC_TXT(0);
1996 #ifdef DEBUG
1997 fprintf(stderr, "BAD3: %d\n", yytext[0]);
1998 #endif
1999 return TOK_ERROR_BAD;
2000 }
2001 YY_BREAK
2002 case 81:
2003 YY_RULE_SETUP
2004 #line 366 "bincfg/bincfg_lex_real.l"
2005 ECHO;
2006 YY_BREAK
2007 #line 2007 "bincfg/bincfg_lex.c"
2008 case YY_STATE_EOF(INITIAL):
2009 case YY_STATE_EOF(SEC_VAR):
2010 case YY_STATE_EOF(SEC_BSW):
2011 case YY_STATE_EOF(SEC_MAP):
2012 case YY_STATE_EOF(SEC_EBK):
2013 case YY_STATE_EOF(SEC_ATR):
2014 case YY_STATE_EOF(SEC_PRL):
2015 case YY_STATE_EOF(SEC_MC0):
2016 case YY_STATE_EOF(SEC_MC1):
2017 case YY_STATE_EOF(SEC_MC2):
2018 yyterminate();
2019
2020 case YY_END_OF_BUFFER:
2021 {
2022 /* Amount of text matched not including the EOB char. */
2023 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
2024
2025 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2026 *yy_cp = (yy_hold_char);
2027 YY_RESTORE_YY_MORE_OFFSET
2028
2029 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2030 {
2031 /* We're scanning a new file or input source. It's
2032 * possible that this happened because the user
2033 * just pointed yyin at a new source and called
2034 * yylex(). If so, then we have to assure
2035 * consistency between YY_CURRENT_BUFFER and our
2036 * globals. Here is the right place to do so, because
2037 * this is the first action (other than possibly a
2038 * back-up) that will match for the new input source.
2039 */
2040 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2041 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
2042 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2043 }
2044
2045 /* Note that here we test for yy_c_buf_p "<=" to the position
2046 * of the first EOB in the buffer, since yy_c_buf_p will
2047 * already have been incremented past the NUL character
2048 * (since all states make transitions on EOB to the
2049 * end-of-buffer state). Contrast this with the test
2050 * in input().
2051 */
2052 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2053 { /* This was really a NUL. */
2054 yy_state_type yy_next_state;
2055
2056 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
2057
2058 yy_current_state = yy_get_previous_state( );
2059
2060 /* Okay, we're now positioned to make the NUL
2061 * transition. We couldn't have
2062 * yy_get_previous_state() go ahead and do it
2063 * for us because it doesn't know how to deal
2064 * with the possibility of jamming (and we don't
2065 * want to build jamming into it because then it
2066 * will run more slowly).
2067 */
2068
2069 yy_next_state = yy_try_NUL_trans( yy_current_state );
2070
2071 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2072
2073 if ( yy_next_state )
2074 {
2075 /* Consume the NUL. */
2076 yy_cp = ++(yy_c_buf_p);
2077 yy_current_state = yy_next_state;
2078 goto yy_match;
2079 }
2080
2081 else
2082 {
2083 yy_cp = (yy_last_accepting_cpos);
2084 yy_current_state = (yy_last_accepting_state);
2085 goto yy_find_action;
2086 }
2087 }
2088
2089 else switch ( yy_get_next_buffer( ) )
2090 {
2091 case EOB_ACT_END_OF_FILE:
2092 {
2093 (yy_did_buffer_switch_on_eof) = 0;
2094
2095 if ( yywrap( ) )
2096 {
2097 /* Note: because we've taken care in
2098 * yy_get_next_buffer() to have set up
2099 * yytext, we can now set up
2100 * yy_c_buf_p so that if some total
2101 * hoser (like flex itself) wants to
2102 * call the scanner after we return the
2103 * YY_NULL, it'll still work - another
2104 * YY_NULL will get returned.
2105 */
2106 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
2107
2108 yy_act = YY_STATE_EOF(YY_START);
2109 goto do_action;
2110 }
2111
2112 else
2113 {
2114 if ( ! (yy_did_buffer_switch_on_eof) )
2115 YY_NEW_FILE;
2116 }
2117 break;
2118 }
2119
2120 case EOB_ACT_CONTINUE_SCAN:
2121 (yy_c_buf_p) =
2122 (yytext_ptr) + yy_amount_of_matched_text;
2123
2124 yy_current_state = yy_get_previous_state( );
2125
2126 yy_cp = (yy_c_buf_p);
2127 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2128 goto yy_match;
2129
2130 case EOB_ACT_LAST_MATCH:
2131 (yy_c_buf_p) =
2132 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
2133
2134 yy_current_state = yy_get_previous_state( );
2135
2136 yy_cp = (yy_c_buf_p);
2137 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2138 goto yy_find_action;
2139 }
2140 break;
2141 }
2142
2143 default:
2144 YY_FATAL_ERROR(
2145 "fatal flex scanner internal error--no action found" );
2146 } /* end of action switch */
2147 } /* end of scanning one token */
2148 } /* end of user's declarations */
2149 } /* end of yylex */
2150
2151 /* yy_get_next_buffer - try to read in a new buffer
2152 *
2153 * Returns a code representing an action:
2154 * EOB_ACT_LAST_MATCH -
2155 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2156 * EOB_ACT_END_OF_FILE - end of file
2157 */
yy_get_next_buffer(void)2158 static int yy_get_next_buffer (void)
2159 {
2160 char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2161 char *source = (yytext_ptr);
2162 int number_to_move, i;
2163 int ret_val;
2164
2165 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
2166 YY_FATAL_ERROR(
2167 "fatal flex scanner internal error--end of buffer missed" );
2168
2169 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2170 { /* Don't try to fill the buffer, so this is an EOF. */
2171 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
2172 {
2173 /* We matched a single character, the EOB, so
2174 * treat this as a final EOF.
2175 */
2176 return EOB_ACT_END_OF_FILE;
2177 }
2178
2179 else
2180 {
2181 /* We matched some text prior to the EOB, first
2182 * process it.
2183 */
2184 return EOB_ACT_LAST_MATCH;
2185 }
2186 }
2187
2188 /* Try to read more data. */
2189
2190 /* First move last chars to start of buffer. */
2191 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
2192
2193 for ( i = 0; i < number_to_move; ++i )
2194 *(dest++) = *(source++);
2195
2196 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2197 /* don't do the read, it's not guaranteed to return an EOF,
2198 * just force an EOF
2199 */
2200 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
2201
2202 else
2203 {
2204 int num_to_read =
2205 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2206
2207 while ( num_to_read <= 0 )
2208 { /* Not enough room in the buffer - grow it. */
2209
2210 /* just a shorter name for the current buffer */
2211 YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
2212
2213 int yy_c_buf_p_offset =
2214 (int) ((yy_c_buf_p) - b->yy_ch_buf);
2215
2216 if ( b->yy_is_our_buffer )
2217 {
2218 int new_size = b->yy_buf_size * 2;
2219
2220 if ( new_size <= 0 )
2221 b->yy_buf_size += b->yy_buf_size / 8;
2222 else
2223 b->yy_buf_size *= 2;
2224
2225 b->yy_ch_buf = (char *)
2226 /* Include room in for 2 EOB chars. */
2227 yyrealloc( (void *) b->yy_ch_buf,
2228 (yy_size_t) (b->yy_buf_size + 2) );
2229 }
2230 else
2231 /* Can't grow it, we don't own it. */
2232 b->yy_ch_buf = NULL;
2233
2234 if ( ! b->yy_ch_buf )
2235 YY_FATAL_ERROR(
2236 "fatal error - scanner input buffer overflow" );
2237
2238 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
2239
2240 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2241 number_to_move - 1;
2242
2243 }
2244
2245 if ( num_to_read > YY_READ_BUF_SIZE )
2246 num_to_read = YY_READ_BUF_SIZE;
2247
2248 /* Read in more data. */
2249 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2250 (yy_n_chars), num_to_read );
2251
2252 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2253 }
2254
2255 if ( (yy_n_chars) == 0 )
2256 {
2257 if ( number_to_move == YY_MORE_ADJ )
2258 {
2259 ret_val = EOB_ACT_END_OF_FILE;
2260 yyrestart( yyin );
2261 }
2262
2263 else
2264 {
2265 ret_val = EOB_ACT_LAST_MATCH;
2266 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2267 YY_BUFFER_EOF_PENDING;
2268 }
2269 }
2270
2271 else
2272 ret_val = EOB_ACT_CONTINUE_SCAN;
2273
2274 if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
2275 /* Extend the array by 50%, plus the number we really need. */
2276 int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
2277 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
2278 (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size );
2279 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2280 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2281 /* "- 2" to take care of EOB's */
2282 YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
2283 }
2284
2285 (yy_n_chars) += number_to_move;
2286 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
2287 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
2288
2289 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2290
2291 return ret_val;
2292 }
2293
2294 /* yy_get_previous_state - get the state just before the EOB char was reached */
2295
yy_get_previous_state(void)2296 static yy_state_type yy_get_previous_state (void)
2297 {
2298 yy_state_type yy_current_state;
2299 char *yy_cp;
2300
2301 yy_current_state = (yy_start);
2302
2303 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
2304 {
2305 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2306 if ( yy_accept[yy_current_state] )
2307 {
2308 (yy_last_accepting_state) = yy_current_state;
2309 (yy_last_accepting_cpos) = yy_cp;
2310 }
2311 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2312 {
2313 yy_current_state = (int) yy_def[yy_current_state];
2314 if ( yy_current_state >= 266 )
2315 yy_c = yy_meta[yy_c];
2316 }
2317 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
2318 }
2319
2320 return yy_current_state;
2321 }
2322
2323 /* yy_try_NUL_trans - try to make a transition on the NUL character
2324 *
2325 * synopsis
2326 * next_state = yy_try_NUL_trans( current_state );
2327 */
yy_try_NUL_trans(yy_state_type yy_current_state)2328 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
2329 {
2330 int yy_is_jam;
2331 char *yy_cp = (yy_c_buf_p);
2332
2333 YY_CHAR yy_c = 1;
2334 if ( yy_accept[yy_current_state] )
2335 {
2336 (yy_last_accepting_state) = yy_current_state;
2337 (yy_last_accepting_cpos) = yy_cp;
2338 }
2339 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2340 {
2341 yy_current_state = (int) yy_def[yy_current_state];
2342 if ( yy_current_state >= 266 )
2343 yy_c = yy_meta[yy_c];
2344 }
2345 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
2346 yy_is_jam = (yy_current_state == 265);
2347
2348 return yy_is_jam ? 0 : yy_current_state;
2349 }
2350
2351 #ifndef YY_NO_UNPUT
2352
2353 #endif
2354
2355 #ifndef YY_NO_INPUT
2356 #ifdef __cplusplus
yyinput(void)2357 static int yyinput (void)
2358 #else
2359 static int input (void)
2360 #endif
2361
2362 {
2363 int c;
2364
2365 *(yy_c_buf_p) = (yy_hold_char);
2366
2367 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
2368 {
2369 /* yy_c_buf_p now points to the character we want to return.
2370 * If this occurs *before* the EOB characters, then it's a
2371 * valid NUL; if not, then we've hit the end of the buffer.
2372 */
2373 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2374 /* This was really a NUL. */
2375 *(yy_c_buf_p) = '\0';
2376
2377 else
2378 { /* need more input */
2379 int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
2380 ++(yy_c_buf_p);
2381
2382 switch ( yy_get_next_buffer( ) )
2383 {
2384 case EOB_ACT_LAST_MATCH:
2385 /* This happens because yy_g_n_b()
2386 * sees that we've accumulated a
2387 * token and flags that we need to
2388 * try matching the token before
2389 * proceeding. But for input(),
2390 * there's no matching to consider.
2391 * So convert the EOB_ACT_LAST_MATCH
2392 * to EOB_ACT_END_OF_FILE.
2393 */
2394
2395 /* Reset buffer status. */
2396 yyrestart( yyin );
2397
2398 /*FALLTHROUGH*/
2399
2400 case EOB_ACT_END_OF_FILE:
2401 {
2402 if ( yywrap( ) )
2403 return 0;
2404
2405 if ( ! (yy_did_buffer_switch_on_eof) )
2406 YY_NEW_FILE;
2407 #ifdef __cplusplus
2408 return yyinput();
2409 #else
2410 return input();
2411 #endif
2412 }
2413
2414 case EOB_ACT_CONTINUE_SCAN:
2415 (yy_c_buf_p) = (yytext_ptr) + offset;
2416 break;
2417 }
2418 }
2419 }
2420
2421 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
2422 *(yy_c_buf_p) = '\0'; /* preserve yytext */
2423 (yy_hold_char) = *++(yy_c_buf_p);
2424
2425 return c;
2426 }
2427 #endif /* ifndef YY_NO_INPUT */
2428
2429 /** Immediately switch to a different input stream.
2430 * @param input_file A readable stream.
2431 *
2432 * @note This function does not reset the start condition to @c INITIAL .
2433 */
yyrestart(FILE * input_file)2434 void yyrestart (FILE * input_file )
2435 {
2436
2437 if ( ! YY_CURRENT_BUFFER ){
2438 yyensure_buffer_stack ();
2439 YY_CURRENT_BUFFER_LVALUE =
2440 yy_create_buffer( yyin, YY_BUF_SIZE );
2441 }
2442
2443 yy_init_buffer( YY_CURRENT_BUFFER, input_file );
2444 yy_load_buffer_state( );
2445 }
2446
2447 /** Switch to a different input buffer.
2448 * @param new_buffer The new input buffer.
2449 *
2450 */
yy_switch_to_buffer(YY_BUFFER_STATE new_buffer)2451 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
2452 {
2453
2454 /* TODO. We should be able to replace this entire function body
2455 * with
2456 * yypop_buffer_state();
2457 * yypush_buffer_state(new_buffer);
2458 */
2459 yyensure_buffer_stack ();
2460 if ( YY_CURRENT_BUFFER == new_buffer )
2461 return;
2462
2463 if ( YY_CURRENT_BUFFER )
2464 {
2465 /* Flush out information for old buffer. */
2466 *(yy_c_buf_p) = (yy_hold_char);
2467 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2468 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2469 }
2470
2471 YY_CURRENT_BUFFER_LVALUE = new_buffer;
2472 yy_load_buffer_state( );
2473
2474 /* We don't actually know whether we did this switch during
2475 * EOF (yywrap()) processing, but the only time this flag
2476 * is looked at is after yywrap() is called, so it's safe
2477 * to go ahead and always set it.
2478 */
2479 (yy_did_buffer_switch_on_eof) = 1;
2480 }
2481
yy_load_buffer_state(void)2482 static void yy_load_buffer_state (void)
2483 {
2484 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2485 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2486 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2487 (yy_hold_char) = *(yy_c_buf_p);
2488 }
2489
2490 /** Allocate and initialize an input buffer state.
2491 * @param file A readable stream.
2492 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2493 *
2494 * @return the allocated buffer state.
2495 */
yy_create_buffer(FILE * file,int size)2496 YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
2497 {
2498 YY_BUFFER_STATE b;
2499
2500 b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
2501 if ( ! b )
2502 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2503
2504 b->yy_buf_size = size;
2505
2506 /* yy_ch_buf has to be 2 characters longer than the size given because
2507 * we need to put in 2 end-of-buffer characters.
2508 */
2509 b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) );
2510 if ( ! b->yy_ch_buf )
2511 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2512
2513 b->yy_is_our_buffer = 1;
2514
2515 yy_init_buffer( b, file );
2516
2517 return b;
2518 }
2519
2520 /** Destroy the buffer.
2521 * @param b a buffer created with yy_create_buffer()
2522 *
2523 */
yy_delete_buffer(YY_BUFFER_STATE b)2524 void yy_delete_buffer (YY_BUFFER_STATE b )
2525 {
2526
2527 if ( ! b )
2528 return;
2529
2530 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2531 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2532
2533 if ( b->yy_is_our_buffer )
2534 yyfree( (void *) b->yy_ch_buf );
2535
2536 yyfree( (void *) b );
2537 }
2538
2539 /* Initializes or reinitializes a buffer.
2540 * This function is sometimes called more than once on the same buffer,
2541 * such as during a yyrestart() or at EOF.
2542 */
yy_init_buffer(YY_BUFFER_STATE b,FILE * file)2543 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
2544
2545 {
2546 int oerrno = errno;
2547
2548 yy_flush_buffer( b );
2549
2550 b->yy_input_file = file;
2551 b->yy_fill_buffer = 1;
2552
2553 /* If b is the current buffer, then yy_init_buffer was _probably_
2554 * called from yyrestart() or through yy_get_next_buffer.
2555 * In that case, we don't want to reset the lineno or column.
2556 */
2557 if (b != YY_CURRENT_BUFFER){
2558 b->yy_bs_lineno = 1;
2559 b->yy_bs_column = 0;
2560 }
2561
2562 b->yy_is_interactive = 0;
2563
2564 errno = oerrno;
2565 }
2566
2567 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2568 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2569 *
2570 */
yy_flush_buffer(YY_BUFFER_STATE b)2571 void yy_flush_buffer (YY_BUFFER_STATE b )
2572 {
2573 if ( ! b )
2574 return;
2575
2576 b->yy_n_chars = 0;
2577
2578 /* We always need two end-of-buffer characters. The first causes
2579 * a transition to the end-of-buffer state. The second causes
2580 * a jam in that state.
2581 */
2582 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2583 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2584
2585 b->yy_buf_pos = &b->yy_ch_buf[0];
2586
2587 b->yy_at_bol = 1;
2588 b->yy_buffer_status = YY_BUFFER_NEW;
2589
2590 if ( b == YY_CURRENT_BUFFER )
2591 yy_load_buffer_state( );
2592 }
2593
2594 /** Pushes the new state onto the stack. The new state becomes
2595 * the current state. This function will allocate the stack
2596 * if necessary.
2597 * @param new_buffer The new state.
2598 *
2599 */
yypush_buffer_state(YY_BUFFER_STATE new_buffer)2600 void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
2601 {
2602 if (new_buffer == NULL)
2603 return;
2604
2605 yyensure_buffer_stack();
2606
2607 /* This block is copied from yy_switch_to_buffer. */
2608 if ( YY_CURRENT_BUFFER )
2609 {
2610 /* Flush out information for old buffer. */
2611 *(yy_c_buf_p) = (yy_hold_char);
2612 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2613 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2614 }
2615
2616 /* Only push if top exists. Otherwise, replace top. */
2617 if (YY_CURRENT_BUFFER)
2618 (yy_buffer_stack_top)++;
2619 YY_CURRENT_BUFFER_LVALUE = new_buffer;
2620
2621 /* copied from yy_switch_to_buffer. */
2622 yy_load_buffer_state( );
2623 (yy_did_buffer_switch_on_eof) = 1;
2624 }
2625
2626 /** Removes and deletes the top of the stack, if present.
2627 * The next element becomes the new top.
2628 *
2629 */
yypop_buffer_state(void)2630 void yypop_buffer_state (void)
2631 {
2632 if (!YY_CURRENT_BUFFER)
2633 return;
2634
2635 yy_delete_buffer(YY_CURRENT_BUFFER );
2636 YY_CURRENT_BUFFER_LVALUE = NULL;
2637 if ((yy_buffer_stack_top) > 0)
2638 --(yy_buffer_stack_top);
2639
2640 if (YY_CURRENT_BUFFER) {
2641 yy_load_buffer_state( );
2642 (yy_did_buffer_switch_on_eof) = 1;
2643 }
2644 }
2645
2646 /* Allocates the stack if it does not exist.
2647 * Guarantees space for at least one push.
2648 */
yyensure_buffer_stack(void)2649 static void yyensure_buffer_stack (void)
2650 {
2651 yy_size_t num_to_alloc;
2652
2653 if (!(yy_buffer_stack)) {
2654
2655 /* First allocation is just for 2 elements, since we don't know if this
2656 * scanner will even need a stack. We use 2 instead of 1 to avoid an
2657 * immediate realloc on the next call.
2658 */
2659 num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
2660 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
2661 (num_to_alloc * sizeof(struct yy_buffer_state*)
2662 );
2663 if ( ! (yy_buffer_stack) )
2664 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2665
2666 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2667
2668 (yy_buffer_stack_max) = num_to_alloc;
2669 (yy_buffer_stack_top) = 0;
2670 return;
2671 }
2672
2673 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
2674
2675 /* Increase the buffer to prepare for a possible push. */
2676 yy_size_t grow_size = 8 /* arbitrary grow size */;
2677
2678 num_to_alloc = (yy_buffer_stack_max) + grow_size;
2679 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
2680 ((yy_buffer_stack),
2681 num_to_alloc * sizeof(struct yy_buffer_state*)
2682 );
2683 if ( ! (yy_buffer_stack) )
2684 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2685
2686 /* zero only the new slots.*/
2687 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
2688 (yy_buffer_stack_max) = num_to_alloc;
2689 }
2690 }
2691
2692 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2693 * @param base the character buffer
2694 * @param size the size in bytes of the character buffer
2695 *
2696 * @return the newly allocated buffer state object.
2697 */
yy_scan_buffer(char * base,yy_size_t size)2698 YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
2699 {
2700 YY_BUFFER_STATE b;
2701
2702 if ( size < 2 ||
2703 base[size-2] != YY_END_OF_BUFFER_CHAR ||
2704 base[size-1] != YY_END_OF_BUFFER_CHAR )
2705 /* They forgot to leave room for the EOB's. */
2706 return NULL;
2707
2708 b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
2709 if ( ! b )
2710 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2711
2712 b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
2713 b->yy_buf_pos = b->yy_ch_buf = base;
2714 b->yy_is_our_buffer = 0;
2715 b->yy_input_file = NULL;
2716 b->yy_n_chars = b->yy_buf_size;
2717 b->yy_is_interactive = 0;
2718 b->yy_at_bol = 1;
2719 b->yy_fill_buffer = 0;
2720 b->yy_buffer_status = YY_BUFFER_NEW;
2721
2722 yy_switch_to_buffer( b );
2723
2724 return b;
2725 }
2726
2727 /** Setup the input buffer state to scan a string. The next call to yylex() will
2728 * scan from a @e copy of @a str.
2729 * @param yystr a NUL-terminated string to scan
2730 *
2731 * @return the newly allocated buffer state object.
2732 * @note If you want to scan bytes that may contain NUL values, then use
2733 * yy_scan_bytes() instead.
2734 */
yy_scan_string(const char * yystr)2735 YY_BUFFER_STATE yy_scan_string (const char * yystr )
2736 {
2737
2738 return yy_scan_bytes( yystr, (int) strlen(yystr) );
2739 }
2740
2741 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
2742 * scan from a @e copy of @a bytes.
2743 * @param yybytes the byte buffer to scan
2744 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
2745 *
2746 * @return the newly allocated buffer state object.
2747 */
yy_scan_bytes(const char * yybytes,int _yybytes_len)2748 YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len )
2749 {
2750 YY_BUFFER_STATE b;
2751 char *buf;
2752 yy_size_t n;
2753 int i;
2754
2755 /* Get memory for full buffer, including space for trailing EOB's. */
2756 n = (yy_size_t) (_yybytes_len + 2);
2757 buf = (char *) yyalloc( n );
2758 if ( ! buf )
2759 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2760
2761 for ( i = 0; i < _yybytes_len; ++i )
2762 buf[i] = yybytes[i];
2763
2764 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2765
2766 b = yy_scan_buffer( buf, n );
2767 if ( ! b )
2768 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2769
2770 /* It's okay to grow etc. this buffer, and we should throw it
2771 * away when we're done.
2772 */
2773 b->yy_is_our_buffer = 1;
2774
2775 return b;
2776 }
2777
2778 #ifndef YY_EXIT_FAILURE
2779 #define YY_EXIT_FAILURE 2
2780 #endif
2781
yy_fatal_error(const char * msg)2782 static void yynoreturn yy_fatal_error (const char* msg )
2783 {
2784 fprintf( stderr, "%s\n", msg );
2785 exit( YY_EXIT_FAILURE );
2786 }
2787
2788 /* Redefine yyless() so it works in section 3 code. */
2789
2790 #undef yyless
2791 #define yyless(n) \
2792 do \
2793 { \
2794 /* Undo effects of setting up yytext. */ \
2795 int yyless_macro_arg = (n); \
2796 YY_LESS_LINENO(yyless_macro_arg);\
2797 yytext[yyleng] = (yy_hold_char); \
2798 (yy_c_buf_p) = yytext + yyless_macro_arg; \
2799 (yy_hold_char) = *(yy_c_buf_p); \
2800 *(yy_c_buf_p) = '\0'; \
2801 yyleng = yyless_macro_arg; \
2802 } \
2803 while ( 0 )
2804
2805 /* Accessor methods (get/set functions) to struct members. */
2806
2807 /** Get the current line number.
2808 *
2809 */
yyget_lineno(void)2810 int yyget_lineno (void)
2811 {
2812
2813 return yylineno;
2814 }
2815
2816 /** Get the input stream.
2817 *
2818 */
yyget_in(void)2819 FILE *yyget_in (void)
2820 {
2821 return yyin;
2822 }
2823
2824 /** Get the output stream.
2825 *
2826 */
yyget_out(void)2827 FILE *yyget_out (void)
2828 {
2829 return yyout;
2830 }
2831
2832 /** Get the length of the current token.
2833 *
2834 */
yyget_leng(void)2835 int yyget_leng (void)
2836 {
2837 return yyleng;
2838 }
2839
2840 /** Get the current token.
2841 *
2842 */
2843
yyget_text(void)2844 char *yyget_text (void)
2845 {
2846 return yytext;
2847 }
2848
2849 /** Set the current line number.
2850 * @param _line_number line number
2851 *
2852 */
yyset_lineno(int _line_number)2853 void yyset_lineno (int _line_number )
2854 {
2855
2856 yylineno = _line_number;
2857 }
2858
2859 /** Set the input stream. This does not discard the current
2860 * input buffer.
2861 * @param _in_str A readable stream.
2862 *
2863 * @see yy_switch_to_buffer
2864 */
yyset_in(FILE * _in_str)2865 void yyset_in (FILE * _in_str )
2866 {
2867 yyin = _in_str ;
2868 }
2869
yyset_out(FILE * _out_str)2870 void yyset_out (FILE * _out_str )
2871 {
2872 yyout = _out_str ;
2873 }
2874
yyget_debug(void)2875 int yyget_debug (void)
2876 {
2877 return yy_flex_debug;
2878 }
2879
yyset_debug(int _bdebug)2880 void yyset_debug (int _bdebug )
2881 {
2882 yy_flex_debug = _bdebug ;
2883 }
2884
yy_init_globals(void)2885 static int yy_init_globals (void)
2886 {
2887 /* Initialization is the same as for the non-reentrant scanner.
2888 * This function is called from yylex_destroy(), so don't allocate here.
2889 */
2890
2891 (yy_buffer_stack) = NULL;
2892 (yy_buffer_stack_top) = 0;
2893 (yy_buffer_stack_max) = 0;
2894 (yy_c_buf_p) = NULL;
2895 (yy_init) = 0;
2896 (yy_start) = 0;
2897
2898 /* Defined in main.c */
2899 #ifdef YY_STDINIT
2900 yyin = stdin;
2901 yyout = stdout;
2902 #else
2903 yyin = NULL;
2904 yyout = NULL;
2905 #endif
2906
2907 /* For future reference: Set errno on error, since we are called by
2908 * yylex_init()
2909 */
2910 return 0;
2911 }
2912
2913 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
yylex_destroy(void)2914 int yylex_destroy (void)
2915 {
2916
2917 /* Pop the buffer stack, destroying each element. */
2918 while(YY_CURRENT_BUFFER){
2919 yy_delete_buffer( YY_CURRENT_BUFFER );
2920 YY_CURRENT_BUFFER_LVALUE = NULL;
2921 yypop_buffer_state();
2922 }
2923
2924 /* Destroy the stack itself. */
2925 yyfree((yy_buffer_stack) );
2926 (yy_buffer_stack) = NULL;
2927
2928 /* Reset the globals. This is important in a non-reentrant scanner so the next time
2929 * yylex() is called, initialization will occur. */
2930 yy_init_globals( );
2931
2932 return 0;
2933 }
2934
2935 /*
2936 * Internal utility routines.
2937 */
2938
2939 #ifndef yytext_ptr
yy_flex_strncpy(char * s1,const char * s2,int n)2940 static void yy_flex_strncpy (char* s1, const char * s2, int n )
2941 {
2942
2943 int i;
2944 for ( i = 0; i < n; ++i )
2945 s1[i] = s2[i];
2946 }
2947 #endif
2948
2949 #ifdef YY_NEED_STRLEN
yy_flex_strlen(const char * s)2950 static int yy_flex_strlen (const char * s )
2951 {
2952 int n;
2953 for ( n = 0; s[n]; ++n )
2954 ;
2955
2956 return n;
2957 }
2958 #endif
2959
yyalloc(yy_size_t size)2960 void *yyalloc (yy_size_t size )
2961 {
2962 return malloc(size);
2963 }
2964
yyrealloc(void * ptr,yy_size_t size)2965 void *yyrealloc (void * ptr, yy_size_t size )
2966 {
2967
2968 /* The cast to (char *) in the following accommodates both
2969 * implementations that use char* generic pointers, and those
2970 * that use void* generic pointers. It works with the latter
2971 * because both ANSI C and C++ allow castless assignment from
2972 * any pointer type to void*, and deal with argument conversions
2973 * as though doing an assignment.
2974 */
2975 return realloc(ptr, size);
2976 }
2977
yyfree(void * ptr)2978 void yyfree (void * ptr )
2979 {
2980 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
2981 }
2982
2983 #define YYTABLES_NAME "yytables"
2984
2985 #line 366 "bincfg/bincfg_lex_real.l"
2986
2987
2988 /* ======================================================================== */
2989 /* This program is free software; you can redistribute it and/or modify */
2990 /* it under the terms of the GNU General Public License as published by */
2991 /* the Free Software Foundation; either version 2 of the License, or */
2992 /* (at your option) any later version. */
2993 /* */
2994 /* This program is distributed in the hope that it will be useful, */
2995 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
2996 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU */
2997 /* General Public License for more details. */
2998 /* */
2999 /* You should have received a copy of the GNU General Public License along */
3000 /* with this program; if not, write to the Free Software Foundation, Inc., */
3001 /* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */
3002 /* ======================================================================== */
3003 /* Copyright (c) 2003-+Inf, Joseph Zbiciak */
3004 /* ======================================================================== */
3005
3006