1 /* A lexical scanner generated by flex */
3 /* Scanner skeleton version:
8 #define YY_FLEX_MAJOR_VERSION 2
9 #define YY_FLEX_MINOR_VERSION 5
14 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
27 /* Use prototypes in function declarations. */
30 /* The "const" storage-class-modifier is valid. */
33 #else /* ! __cplusplus */
41 #endif /* ! __cplusplus */
60 #define YY_PROTO(proto) proto
62 #define YY_PROTO(proto) ()
65 /* Returned upon end-of-file. */
68 /* Promotes a possibly negative, possibly signed char to an unsigned
69 * integer for use as an array index. If the signed char is negative,
70 * we want to instead treat it as an 8-bit unsigned char, hence the
73 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
75 /* Enter a start condition. This macro really ought to take a parameter,
76 * but we do it the disgusting crufty way forced on us by the ()-less
77 * definition of BEGIN.
79 #define BEGIN yy_start = 1 + 2 *
81 /* Translate the current start state into a value that can be later handed
82 * to BEGIN to return to the state. The YYSTATE alias is for lex
85 #define YY_START ((yy_start - 1) / 2)
86 #define YYSTATE YY_START
88 /* Action number for EOF rule of a given start state. */
89 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
91 /* Special action meaning "start processing a new file". */
92 #define YY_NEW_FILE yyrestart( yyin )
94 #define YY_END_OF_BUFFER_CHAR 0
96 /* Size of default input buffer. */
97 #define YY_BUF_SIZE 16384
99 typedef struct yy_buffer_state *YY_BUFFER_STATE;
102 extern FILE *yyin, *yyout;
104 #define EOB_ACT_CONTINUE_SCAN 0
105 #define EOB_ACT_END_OF_FILE 1
106 #define EOB_ACT_LAST_MATCH 2
108 /* The funky do-while in the following #define is used to turn the definition
109 * int a single C statement (which needs a semi-colon terminator). This
110 * avoids problems with code like:
112 * if ( condition_holds )
115 * do_something_else();
117 * Prior to using the do-while the compiler would get upset at the
118 * "else" because it interpreted the "if" statement as being all
119 * done when it reached the ';' after the yyless() call.
122 /* Return all but the first 'n' matched characters back to the input stream. */
127 /* Undo effects of setting up yytext. */ \
128 *yy_cp = yy_hold_char; \
129 YY_RESTORE_YY_MORE_OFFSET \
130 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
131 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
135 #define unput(c) yyunput( c, yytext_ptr )
137 /* The following is because we cannot portably get our hands on size_t
138 * (without autoconf's help, which isn't available because we want
139 * flex-generated scanners to compile on their own).
141 typedef unsigned int yy_size_t;
144 struct yy_buffer_state
148 char *yy_ch_buf; /* input buffer */
149 char *yy_buf_pos; /* current position in input buffer */
151 /* Size of input buffer in bytes, not including room for EOB
154 yy_size_t yy_buf_size;
156 /* Number of characters read into yy_ch_buf, not including EOB
161 /* Whether we "own" the buffer - i.e., we know we created it,
162 * and can realloc() it to grow it, and should free() it to
165 int yy_is_our_buffer;
167 /* Whether this is an "interactive" input source; if so, and
168 * if we're using stdio for input, then we want to use getc()
169 * instead of fread(), to make sure we stop fetching input after
172 int yy_is_interactive;
174 /* Whether we're considered to be at the beginning of a line.
175 * If so, '^' rules will be active on the next match, otherwise
180 /* Whether to try to fill the input buffer when we reach the
185 int yy_buffer_status;
186 #define YY_BUFFER_NEW 0
187 #define YY_BUFFER_NORMAL 1
188 /* When an EOF's been seen but there's still some text to process
189 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
190 * shouldn't try reading from the input source any more. We might
191 * still have a bunch of tokens to match, though, because of
192 * possible backing-up.
194 * When we actually see the EOF, we change the status to "new"
195 * (via yyrestart()), so that the user can continue scanning by
196 * just pointing yyin at a new input file.
198 #define YY_BUFFER_EOF_PENDING 2
201 static YY_BUFFER_STATE yy_current_buffer = 0;
203 /* We provide macros for accessing buffer states in case in the
204 * future we want to put the buffer states in a more general
207 #define YY_CURRENT_BUFFER yy_current_buffer
210 /* yy_hold_char holds the character lost when yytext is formed. */
211 static char yy_hold_char;
213 static int yy_n_chars; /* number of characters read into yy_ch_buf */
218 /* Points to current character in buffer. */
219 static char *yy_c_buf_p = (char *) 0;
220 static int yy_init = 1; /* whether we need to initialize */
221 static int yy_start = 0; /* start state number */
223 /* Flag which is used to allow yywrap()'s to do buffer switches
224 * instead of setting up a fresh yyin. A bit of a hack ...
226 static int yy_did_buffer_switch_on_eof;
228 void yyrestart YY_PROTO(( FILE *input_file ));
230 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
231 void yy_load_buffer_state YY_PROTO(( void ));
232 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
233 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
234 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
235 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
236 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
238 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
239 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
240 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
242 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
243 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
244 static void yy_flex_free YY_PROTO(( void * ));
246 #define yy_new_buffer yy_create_buffer
248 #define yy_set_interactive(is_interactive) \
250 if ( ! yy_current_buffer ) \
251 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
252 yy_current_buffer->yy_is_interactive = is_interactive; \
255 #define yy_set_bol(at_bol) \
257 if ( ! yy_current_buffer ) \
258 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
259 yy_current_buffer->yy_at_bol = at_bol; \
262 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
266 #define YY_SKIP_YYWRAP
267 typedef unsigned char YY_CHAR;
268 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
269 typedef int yy_state_type;
271 #define yytext_ptr yytext
273 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
274 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
275 static int yy_get_next_buffer YY_PROTO(( void ));
276 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
278 /* Done after the current pattern has been matched and before the
279 * corresponding action - sets up yytext.
281 #define YY_DO_BEFORE_ACTION \
282 yytext_ptr = yy_bp; \
283 yyleng = (int) (yy_cp - yy_bp); \
284 yy_hold_char = *yy_cp; \
288 #define YY_NUM_RULES 39
289 #define YY_END_OF_BUFFER 40
290 static yyconst short int yy_accept[572] =
292 0, 0, 40, 38, 37, 38, 38, 38, 38, 34,
293 34, 34, 34, 34, 34, 34, 34, 34, 38, 35,
294 35, 36, 36, 36, 36, 36, 36, 36, 36, 36,
295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
296 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
297 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
298 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
299 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
300 0, 0, 14, 0, 0, 0, 0, 0, 0, 0,
301 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,
303 0, 27, 0, 33, 21, 20, 0, 19, 18, 0,
304 0, 15, 32, 31, 0, 17, 16, 0, 0, 0,
305 0, 23, 0, 22, 0, 26, 0, 25, 24, 0,
306 0, 0, 0, 0, 0, 30, 29, 12, 13, 0,
307 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
308 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
310 0, 0, 0, 0, 12, 13, 0, 0, 0, 0,
311 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
312 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
314 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
316 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
317 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,
318 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
320 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
321 0, 0, 0, 0, 0, 0, 9, 0, 0, 0,
322 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
323 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
327 9, 10, 11, 7, 7, 0, 0, 0, 0, 0,
328 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
329 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
330 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
331 0, 0, 0, 0, 0, 0, 0, 7, 0, 0,
332 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
333 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
334 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
336 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
339 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
340 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
341 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
342 6, 6, 6, 6, 6, 6, 0, 0, 0, 0,
343 0, 0, 0, 0, 0, 5, 0, 5, 0, 0,
344 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
347 0, 0, 0, 0, 0, 5, 5, 5, 0, 0,
348 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
349 0, 0, 0, 0, 0, 5, 0, 0, 6, 6,
350 0, 6, 0, 0, 0, 0, 0, 0, 0, 0,
351 0, 0, 3, 0, 0, 6, 0, 0, 0, 0,
352 0, 0, 6, 6, 0, 2, 4, 1, 1, 0,
353 6, 0, 0, 0, 1, 0, 0, 1, 2, 4,
357 static yyconst int yy_ec[256] =
359 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
360 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
361 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
362 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
363 1, 1, 4, 5, 6, 1, 7, 8, 9, 8,
364 8, 8, 8, 8, 8, 8, 8, 10, 1, 1,
365 1, 1, 1, 1, 13, 14, 15, 16, 17, 18,
366 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
367 29, 30, 31, 32, 33, 34, 35, 29, 36, 1,
368 11, 1, 12, 1, 1, 1, 13, 14, 15, 16,
370 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
371 27, 28, 29, 30, 31, 32, 33, 34, 35, 29,
372 36, 1, 1, 1, 1, 1, 1, 1, 1, 1,
373 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
374 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
375 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
376 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
377 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
378 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
379 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
381 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
382 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
383 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
384 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
385 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
389 static yyconst int yy_meta[37] =
391 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
392 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
393 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
397 static yyconst short int yy_base[572] =
399 0, 0, 869, 870, 870, 29, 31, 63, 30, 45,
400 837, 31, 850, 44, 24, 841, 50, 870, 61, 870,
401 66, 53, 850, 52, 870, 72, 22, 832, 846, 70,
402 79, 82, 79, 831, 80, 82, 836, 83, 84, 86,
403 829, 87, 827, 88, 118, 98, 119, 845, 829, 824,
404 825, 822, 834, 820, 819, 818, 834, 816, 815, 832,
405 824, 812, 811, 810, 815, 808, 807, 98, 93, 806,
406 811, 804, 801, 802, 801, 800, 799, 798, 801, 802,
407 794, 809, 870, 809, 792, 791, 100, 119, 102, 805,
408 804, 99, 807, 792, 803, 800, 144, 804, 803, 870,
410 135, 870, 114, 870, 870, 870, 131, 870, 870, 136,
411 47, 870, 870, 870, 137, 870, 870, 139, 140, 144,
412 812, 870, 153, 870, 159, 870, 152, 870, 870, 158,
413 160, 162, 163, 169, 175, 870, 870, 164, 173, 783,
414 793, 796, 796, 783, 159, 154, 774, 775, 778, 178,
415 182, 794, 793, 194, 779, 771, 776, 767, 202, 797,
416 785, 784, 794, 793, 774, 780, 767, 777, 760, 772,
417 775, 756, 770, 768, 870, 870, 192, 193, 195, 204,
418 197, 196, 205, 206, 782, 214, 212, 203, 228, 232,
419 758, 757, 240, 779, 748, 765, 765, 242, 210, 760,
421 759, 233, 762, 747, 758, 755, 735, 740, 767, 732,
422 753, 749, 749, 739, 727, 746, 748, 729, 245, 735,
423 727, 732, 723, 742, 752, 751, 732, 726, 736, 732,
424 250, 253, 723, 722, 255, 744, 263, 743, 727, 713,
425 267, 740, 711, 721, 724, 724, 711, 193, 237, 702,
426 703, 706, 269, 697, 270, 715, 701, 717, 715, 274,
427 715, 691, 710, 269, 273, 723, 692, 709, 709, 691,
428 718, 705, 701, 692, 282, 278, 293, 704, 703, 288,
429 291, 684, 677, 275, 695, 694, 291, 697, 682, 693,
430 690, 286, 223, 303, 304, 307, 308, 309, 310, 704,
432 311, 312, 313, 675, 702, 667, 685, 665, 314, 687,
433 321, 329, 697, 681, 667, 660, 678, 664, 679, 333,
434 690, 870, 870, 344, 346, 689, 688, 659, 669, 672,
435 672, 659, 309, 291, 650, 651, 654, 348, 657, 649,
436 654, 645, 664, 674, 673, 654, 648, 658, 654, 668,
437 356, 639, 357, 632, 358, 309, 361, 637, 630, 635,
438 662, 646, 652, 356, 369, 659, 364, 372, 374, 345,
439 366, 373, 377, 380, 382, 383, 658, 388, 384, 386,
440 404, 657, 626, 643, 643, 625, 652, 639, 635, 626,
441 648, 387, 411, 647, 646, 645, 644, 615, 388, 614,
443 616, 389, 394, 625, 421, 422, 617, 609, 614, 605,
444 624, 634, 633, 614, 608, 618, 614, 426, 628, 427,
445 627, 611, 597, 590, 608, 594, 609, 612, 399, 619,
446 610, 598, 592, 585, 590, 582, 597, 597, 428, 430,
447 610, 579, 596, 596, 578, 605, 592, 588, 579, 432,
448 435, 444, 573, 566, 571, 598, 582, 439, 441, 582,
449 581, 563, 579, 564, 562, 566, 449, 452, 589, 573,
450 559, 552, 570, 556, 571, 454, 457, 465, 460, 463,
451 582, 581, 580, 551, 570, 468, 566, 565, 547, 563,
452 544, 558, 556, 476, 471, 479, 542, 535, 540, 567,
454 551, 481, 565, 483, 485, 493, 495, 503, 564, 498,
455 870, 529, 528, 547, 526, 545, 547, 528, 505, 556,
456 555, 554, 553, 498, 508, 494, 415, 501, 870, 870,
457 473, 870, 469, 419, 417, 405, 511, 391, 381, 513,
458 521, 516, 870, 300, 296, 870, 309, 518, 523, 525,
459 527, 529, 870, 870, 234, 250, 213, 531, 533, 207,
460 870, 535, 537, 539, 541, 543, 545, 870, 870, 870,
464 static yyconst short int yy_def[572] =
466 571, 1, 571, 571, 571, 571, 571, 571, 571, 571,
467 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
468 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
469 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
470 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
471 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
472 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
473 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
474 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
475 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
477 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
478 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
479 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
480 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
481 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
482 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
483 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
484 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
485 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
486 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
488 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
489 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
490 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
491 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
492 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
493 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
494 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
495 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
496 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
497 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
499 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
500 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
501 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
502 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
503 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
504 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
505 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
506 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
507 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
508 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
510 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
511 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
512 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
513 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
514 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
515 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
516 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
517 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
518 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
519 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
521 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
522 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
523 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
524 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
525 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
526 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
527 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
531 static yyconst short int yy_nxt[907] =
533 4, 4, 5, 6, 4, 7, 4, 8, 8, 4,
534 9, 4, 10, 11, 12, 13, 14, 15, 16, 17,
535 18, 19, 20, 20, 21, 22, 23, 24, 25, 25,
536 26, 27, 28, 25, 29, 30, 31, 31, 32, 32,
537 60, 81, 48, 33, 34, 35, 55, 36, 159, 37,
538 38, 160, 39, 61, 82, 40, 41, 49, 42, 58,
539 50, 56, 161, 43, 45, 63, 44, 76, 46, 46,
540 47, 47, 51, 65, 59, 52, 66, 53, 69, 73,
541 64, 70, 77, 74, 78, 85, 87, 87, 79, 88,
542 88, 67, 71, 68, 50, 55, 72, 58, 63, 66,
544 86, 70, 76, 85, 80, 97, 97, 138, 138, 52,
545 56, 144, 59, 64, 67, 154, 72, 77, 86, 45,
546 45, 118, 120, 119, 46, 46, 139, 139, 121, 140,
547 89, 145, 154, 90, 141, 91, 154, 154, 154, 92,
548 154, 154, 93, 94, 95, 154, 156, 157, 96, 150,
549 150, 151, 151, 154, 159, 155, 164, 160, 165, 159,
550 154, 154, 160, 159, 159, 158, 160, 160, 166, 162,
551 159, 175, 175, 160, 163, 167, 159, 171, 168, 160,
552 176, 176, 182, 184, 183, 189, 190, 150, 150, 185,
553 169, 170, 172, 219, 219, 154, 219, 219, 219, 173,
555 174, 193, 193, 159, 219, 219, 219, 219, 541, 198,
556 198, 222, 220, 219, 199, 219, 297, 200, 298, 201,
557 227, 226, 563, 202, 338, 221, 203, 204, 205, 224,
558 228, 225, 206, 223, 230, 231, 231, 243, 229, 232,
559 232, 235, 244, 241, 236, 247, 219, 237, 237, 242,
560 242, 275, 264, 265, 275, 340, 235, 276, 276, 562,
561 277, 277, 280, 281, 235, 248, 299, 236, 241, 561,
562 159, 159, 300, 160, 160, 159, 311, 311, 160, 284,
563 312, 312, 285, 275, 286, 321, 321, 338, 287, 320,
564 320, 288, 289, 290, 275, 324, 324, 291, 325, 325,
566 321, 321, 328, 332, 338, 338, 339, 329, 338, 338,
567 338, 338, 338, 338, 338, 159, 394, 394, 160, 341,
568 376, 555, 355, 333, 346, 345, 377, 347, 356, 356,
569 355, 554, 374, 342, 375, 553, 357, 357, 348, 343,
570 363, 363, 364, 344, 349, 365, 406, 365, 366, 338,
571 366, 367, 367, 368, 368, 381, 381, 159, 159, 355,
572 160, 160, 355, 399, 399, 393, 393, 406, 394, 394,
573 365, 405, 405, 365, 406, 406, 366, 408, 406, 405,
574 405, 406, 409, 406, 406, 406, 400, 406, 159, 406,
575 540, 160, 406, 401, 407, 431, 431, 414, 413, 402,
577 403, 434, 410, 404, 415, 418, 458, 458, 419, 411,
578 416, 420, 420, 436, 537, 412, 541, 417, 428, 428,
579 429, 435, 365, 406, 542, 366, 437, 418, 418, 439,
580 440, 419, 547, 450, 451, 467, 467, 468, 468, 476,
581 476, 477, 478, 478, 477, 452, 485, 485, 486, 486,
582 494, 479, 480, 494, 546, 502, 495, 495, 503, 496,
583 496, 504, 504, 477, 505, 505, 502, 507, 507, 503,
584 508, 508, 506, 506, 477, 511, 511, 494, 520, 520,
585 494, 545, 502, 519, 519, 544, 520, 520, 525, 525,
586 526, 526, 527, 527, 502, 502, 502, 503, 503, 503,
588 526, 526, 504, 504, 502, 528, 528, 503, 543, 543,
589 506, 506, 536, 536, 537, 539, 539, 540, 548, 548,
590 549, 549, 541, 552, 552, 556, 556, 538, 550, 551,
591 557, 557, 558, 558, 559, 559, 560, 560, 564, 564,
592 565, 565, 566, 566, 567, 567, 568, 568, 568, 568,
593 569, 569, 570, 570, 406, 406, 406, 494, 535, 534,
594 533, 532, 531, 530, 529, 338, 502, 524, 406, 523,
595 522, 521, 518, 517, 516, 515, 514, 513, 512, 510,
596 509, 338, 338, 338, 501, 500, 499, 377, 498, 497,
597 406, 493, 492, 491, 490, 489, 488, 487, 484, 338,
599 483, 482, 481, 475, 474, 473, 406, 472, 471, 470,
600 469, 406, 466, 465, 464, 463, 462, 461, 460, 459,
601 219, 429, 457, 456, 455, 300, 454, 453, 338, 452,
602 449, 448, 447, 446, 406, 406, 445, 444, 443, 442,
603 441, 438, 433, 432, 430, 219, 219, 219, 355, 154,
604 427, 426, 425, 338, 424, 423, 422, 421, 338, 406,
605 365, 364, 398, 219, 397, 396, 395, 392, 391, 154,
606 390, 389, 388, 387, 338, 338, 386, 385, 384, 383,
607 382, 380, 379, 378, 373, 372, 371, 370, 369, 154,
608 154, 275, 362, 361, 360, 185, 359, 358, 219, 354,
610 353, 352, 351, 154, 350, 338, 337, 336, 335, 334,
611 331, 330, 327, 326, 323, 322, 319, 318, 317, 219,
612 316, 315, 314, 313, 219, 310, 309, 308, 307, 306,
613 305, 304, 121, 303, 302, 301, 296, 295, 294, 293,
614 292, 241, 283, 282, 154, 235, 279, 278, 274, 273,
615 272, 271, 219, 219, 270, 269, 268, 267, 266, 263,
616 262, 261, 260, 259, 258, 257, 256, 255, 154, 254,
617 253, 252, 251, 250, 249, 246, 245, 240, 239, 238,
618 154, 234, 233, 219, 218, 217, 216, 215, 214, 213,
619 212, 211, 210, 209, 154, 154, 208, 207, 159, 197,
621 196, 195, 194, 192, 191, 188, 187, 186, 181, 180,
622 179, 178, 177, 154, 153, 152, 149, 148, 147, 146,
623 143, 142, 137, 136, 135, 134, 133, 132, 131, 130,
624 129, 128, 127, 126, 125, 124, 123, 122, 117, 116,
625 115, 114, 113, 112, 111, 110, 109, 108, 107, 106,
626 105, 104, 103, 102, 101, 100, 99, 98, 83, 74,
627 62, 54, 84, 83, 75, 62, 57, 54, 571, 3,
628 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
629 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
630 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
632 571, 571, 571, 571, 571, 571
635 static yyconst short int yy_chk[907] =
637 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
638 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
639 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
640 1, 1, 1, 1, 1, 1, 6, 6, 7, 7,
641 15, 27, 9, 7, 7, 7, 12, 7, 111, 7,
642 7, 111, 7, 15, 27, 7, 7, 9, 7, 14,
643 10, 12, 111, 7, 8, 17, 7, 24, 8, 8,
644 8, 8, 10, 19, 14, 10, 19, 10, 21, 22,
645 17, 21, 24, 22, 26, 30, 31, 31, 26, 32,
646 32, 19, 21, 19, 33, 35, 21, 36, 38, 39,
648 30, 40, 42, 44, 26, 46, 46, 87, 87, 33,
649 35, 92, 36, 38, 39, 103, 40, 42, 44, 45,
650 47, 68, 69, 68, 47, 47, 88, 88, 69, 89,
651 45, 92, 107, 45, 89, 45, 101, 110, 115, 45,
652 118, 119, 45, 45, 45, 120, 103, 107, 45, 97,
653 97, 97, 97, 127, 123, 101, 119, 123, 120, 130,
654 125, 131, 130, 132, 133, 110, 132, 133, 123, 115,
655 134, 138, 138, 134, 118, 125, 135, 132, 127, 135,
656 139, 139, 145, 146, 145, 150, 150, 151, 151, 146,
657 130, 131, 133, 177, 178, 154, 179, 182, 181, 134,
659 135, 154, 154, 159, 188, 180, 183, 184, 560, 159,
660 159, 179, 177, 187, 159, 186, 248, 159, 248, 159,
661 184, 183, 557, 159, 293, 178, 159, 159, 159, 181,
662 186, 182, 159, 180, 188, 189, 189, 199, 187, 190,
663 190, 193, 199, 198, 193, 202, 219, 193, 193, 198,
664 198, 231, 219, 219, 232, 293, 235, 231, 231, 556,
665 232, 232, 235, 235, 237, 202, 249, 237, 241, 555,
666 253, 255, 249, 253, 255, 260, 264, 264, 260, 241,
667 265, 265, 241, 275, 241, 276, 276, 292, 241, 275,
668 275, 241, 241, 241, 277, 280, 280, 241, 281, 281,
670 277, 277, 284, 287, 294, 295, 292, 284, 296, 297,
671 298, 299, 301, 302, 303, 309, 356, 356, 309, 294,
672 334, 547, 311, 287, 299, 298, 334, 301, 311, 311,
673 312, 545, 333, 295, 333, 544, 312, 312, 302, 296,
674 320, 320, 320, 297, 303, 324, 370, 325, 324, 338,
675 325, 324, 324, 325, 325, 338, 338, 351, 353, 355,
676 351, 353, 357, 364, 364, 355, 355, 371, 357, 357,
677 365, 367, 367, 368, 372, 369, 368, 370, 373, 368,
678 368, 374, 371, 375, 376, 379, 365, 380, 392, 378,
679 539, 392, 538, 365, 369, 399, 399, 376, 375, 365,
681 365, 402, 372, 365, 378, 381, 429, 429, 381, 373,
682 379, 381, 381, 403, 536, 374, 527, 380, 393, 393,
683 393, 402, 405, 406, 527, 405, 403, 418, 420, 406,
684 406, 420, 535, 418, 418, 439, 439, 440, 440, 450,
685 450, 450, 451, 451, 451, 452, 458, 458, 459, 459,
686 467, 452, 452, 468, 534, 476, 467, 467, 476, 468,
687 468, 476, 476, 476, 477, 477, 478, 479, 479, 478,
688 480, 480, 478, 478, 478, 486, 486, 494, 495, 495,
689 496, 533, 502, 494, 494, 531, 496, 496, 502, 502,
690 504, 504, 505, 505, 506, 526, 507, 506, 526, 507,
692 506, 506, 507, 507, 508, 510, 510, 508, 528, 528,
693 508, 508, 519, 519, 519, 525, 525, 525, 537, 537,
694 540, 540, 541, 542, 542, 548, 548, 524, 541, 541,
695 549, 549, 550, 550, 551, 551, 552, 552, 558, 558,
696 559, 559, 562, 562, 563, 563, 564, 564, 565, 565,
697 566, 566, 567, 567, 523, 522, 521, 520, 518, 517,
698 516, 515, 514, 513, 512, 509, 503, 501, 500, 499,
699 498, 497, 493, 492, 491, 490, 489, 488, 487, 485,
700 484, 483, 482, 481, 475, 474, 473, 472, 471, 470,
701 469, 466, 465, 464, 463, 462, 461, 460, 457, 456,
703 455, 454, 453, 449, 448, 447, 446, 445, 444, 443,
704 442, 441, 438, 437, 436, 435, 434, 433, 432, 431,
705 430, 428, 427, 426, 425, 424, 423, 422, 421, 419,
706 417, 416, 415, 414, 413, 412, 411, 410, 409, 408,
707 407, 404, 401, 400, 398, 397, 396, 395, 394, 391,
708 390, 389, 388, 387, 386, 385, 384, 383, 382, 377,
709 366, 363, 362, 361, 360, 359, 358, 354, 352, 350,
710 349, 348, 347, 346, 345, 344, 343, 342, 341, 340,
711 339, 337, 336, 335, 332, 331, 330, 329, 328, 327,
712 326, 321, 319, 318, 317, 316, 315, 314, 313, 310,
714 308, 307, 306, 305, 304, 300, 291, 290, 289, 288,
715 286, 285, 283, 282, 279, 278, 274, 273, 272, 271,
716 270, 269, 268, 267, 266, 263, 262, 261, 259, 258,
717 257, 256, 254, 252, 251, 250, 247, 246, 245, 244,
718 243, 242, 240, 239, 238, 236, 234, 233, 230, 229,
719 228, 227, 226, 225, 224, 223, 222, 221, 220, 218,
720 217, 216, 215, 214, 213, 212, 211, 210, 209, 208,
721 207, 206, 205, 204, 203, 201, 200, 197, 196, 195,
722 194, 192, 191, 185, 174, 173, 172, 171, 170, 169,
723 168, 167, 166, 165, 164, 163, 162, 161, 160, 158,
725 157, 156, 155, 153, 152, 149, 148, 147, 144, 143,
726 142, 141, 140, 121, 99, 98, 96, 95, 94, 93,
727 91, 90, 86, 85, 84, 82, 81, 80, 79, 78,
728 77, 76, 75, 74, 73, 72, 71, 70, 67, 66,
729 65, 64, 63, 62, 61, 60, 59, 58, 57, 56,
730 55, 54, 53, 52, 51, 50, 49, 48, 43, 41,
731 37, 34, 29, 28, 23, 16, 13, 11, 3, 571,
732 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
733 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
734 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
736 571, 571, 571, 571, 571, 571
739 static yy_state_type yy_last_accepting_state;
740 static char *yy_last_accepting_cpos;
742 /* The intent behind this definition is that it'll catch
743 * any uses of REJECT which flex missed.
745 #define REJECT reject_used_but_not_detected
746 #define yymore() yymore_used_but_not_detected
747 #define YY_MORE_ADJ 0
748 #define YY_RESTORE_YY_MORE_OFFSET
757 #define YY_DECL struct tws * dparsetime(char *lexstr)
759 #define yyterminate() (void)yy_delete_buffer(lexhandle); \
760 if(!(tw.tw_flags & TW_SUCC)) { \
761 return (struct tws *)NULL; \
763 if(tw.tw_year < 1960) \
764 tw.tw_year += 1900; \
765 if(tw.tw_year < 1960) \
770 * Patchable flag that says how to interpret NN/NN/NN dates. When
771 * true, we do it European style: DD/MM/YY. When false, we do it
772 * American style: MM/DD/YY. Of course, these are all non-RFC822
775 int europeandate = 0;
778 * Table to convert month names to numeric month. We use the
779 * fact that the low order 5 bits of the sum of the 2nd & 3rd
780 * characters of the name is a hash with no collisions for the 12
781 * valid month names. (The mask to 5 bits maps any combination of
782 * upper and lower case into the same hash value).
784 static int month_map[] = {
817 * Same trick for day-of-week using the hash function
818 * (c1 & 7) + (c2 & 4)
820 static int day_map[] = {
835 #define INIT() { cp = yytext;}
836 #define SETWDAY() { cp++; \
837 tw.tw_wday= day_map[(cp[0] & 7) + (cp[1] & 4)]; \
838 tw.tw_flags &= ~TW_SDAY; tw.tw_flags |= TW_SEXP; \
840 #define SETMON() { cp++; \
841 tw.tw_mon = month_map[(cp[0] + cp[1]) & 0x1f]; \
843 #define SETMON_NUM() { tw.tw_mon = atoi(cp)-1; \
845 #define SETYEAR() { tw.tw_year = atoi(cp); \
847 #define SETDAY() { tw.tw_mday = atoi(cp); \
848 tw.tw_flags |= TW_YES; \
850 #define SETTIME() { tw.tw_hour = atoi(cp); \
853 tw.tw_min = atoi(cp); \
855 if(*cp == ':') { tw.tw_sec = atoi(++cp); SKIPD(); } \
857 #define SETZONE(x) { tw.tw_zone = ((x)/100)*60+(x)%100; \
858 tw.tw_flags |= TW_SZEXP; \
860 #define SETDST() { tw.tw_flags |= TW_DST; }
861 #define SKIPD() { while ( isdigit(*cp++) ) ; \
863 #define SKIPTOD() { while ( !isdigit(*cp++) ) ; \
865 #define SKIPA() { while ( isalpha(*cp++) ) ; \
867 #define SKIPTOA() { while ( !isalpha(*cp++) ) ; \
869 #define SKIPSP() { while ( isspace(*cp++) ) ; \
871 #define SKIPTOSP() { while ( !isspace(*cp++) ) ; \
874 /* Macros after this point can all be overridden by user definitions in
878 #ifndef YY_SKIP_YYWRAP
880 extern "C" int yywrap YY_PROTO(( void ));
882 extern int yywrap YY_PROTO(( void ));
887 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
891 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
894 #ifdef YY_NEED_STRLEN
895 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
900 static int yyinput YY_PROTO(( void ));
902 static int input YY_PROTO(( void ));
907 static int yy_start_stack_ptr = 0;
908 static int yy_start_stack_depth = 0;
909 static int *yy_start_stack = 0;
910 #ifndef YY_NO_PUSH_STATE
911 static void yy_push_state YY_PROTO(( int new_state ));
913 #ifndef YY_NO_POP_STATE
914 static void yy_pop_state YY_PROTO(( void ));
916 #ifndef YY_NO_TOP_STATE
917 static int yy_top_state YY_PROTO(( void ));
921 #define YY_NO_PUSH_STATE 1
922 #define YY_NO_POP_STATE 1
923 #define YY_NO_TOP_STATE 1
926 #ifdef YY_MALLOC_DECL
934 /* Just try to get by without declaring the routines. This will fail
935 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
936 * or sizeof(void*) != sizeof(int).
941 /* Amount of stuff to slurp up with each read. */
942 #ifndef YY_READ_BUF_SIZE
943 #define YY_READ_BUF_SIZE 8192
946 /* Copy whatever the last rule matched to the standard output. */
949 /* This used to be an fputs(), but since the string might contain NUL's,
950 * we now use fwrite().
952 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
955 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
956 * is returned in "result".
959 #define YY_INPUT(buf,result,max_size) \
960 if ( yy_current_buffer->yy_is_interactive ) \
963 for ( n = 0; n < max_size && \
964 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
967 buf[n++] = (char) c; \
968 if ( c == EOF && ferror( yyin ) ) \
969 YY_FATAL_ERROR( "input in flex scanner failed" ); \
972 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
973 && ferror( yyin ) ) \
974 YY_FATAL_ERROR( "input in flex scanner failed" );
977 /* No semi-colon after return; correct usage is to write "yyterminate();" -
978 * we don't want an extra ';' after the "return" because that will cause
979 * some compilers to complain about unreachable statements.
982 #define yyterminate() return YY_NULL
985 /* Number of entries by which start-condition stack grows. */
986 #ifndef YY_START_STACK_INCR
987 #define YY_START_STACK_INCR 25
990 /* Report a fatal error. */
991 #ifndef YY_FATAL_ERROR
992 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
995 /* Default declaration of generated scanner - a define so the user can
996 * easily add parameters.
999 #define YY_DECL int yylex YY_PROTO(( void ))
1002 /* Code executed at the beginning of each rule, after yytext and yyleng
1005 #ifndef YY_USER_ACTION
1006 #define YY_USER_ACTION
1009 /* Code executed at the end of each rule. */
1011 #define YY_BREAK break;
1014 #define YY_RULE_SETUP \
1019 register yy_state_type yy_current_state;
1020 register char *yy_cp = NULL, *yy_bp = NULL;
1021 register int yy_act;
1023 #line 159 "dtimep.lex"
1027 YY_BUFFER_STATE lexhandle;
1029 register char *cp; /* *cp is internal to the lexing function yylex() */
1030 static struct tws tw;
1032 memset(&tw,0,sizeof(struct tws));
1033 lexhandle = yy_scan_string(lexstr);
1046 yy_start = 1; /* first start state */
1054 if ( ! yy_current_buffer )
1056 yy_create_buffer( yyin, YY_BUF_SIZE );
1058 yy_load_buffer_state();
1061 while ( 1 ) /* loops until end-of-file is reached */
1065 /* Support of yytext. */
1066 *yy_cp = yy_hold_char;
1068 /* yy_bp points to the position in yy_ch_buf of the start of
1073 yy_current_state = yy_start;
1077 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1078 if ( yy_accept[yy_current_state] )
1080 yy_last_accepting_state = yy_current_state;
1081 yy_last_accepting_cpos = yy_cp;
1083 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1085 yy_current_state = (int) yy_def[yy_current_state];
1086 if ( yy_current_state >= 572 )
1087 yy_c = yy_meta[(unsigned int) yy_c];
1089 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1092 while ( yy_base[yy_current_state] != 870 );
1095 yy_act = yy_accept[yy_current_state];
1097 { /* have to back up */
1098 yy_cp = yy_last_accepting_cpos;
1099 yy_current_state = yy_last_accepting_state;
1100 yy_act = yy_accept[yy_current_state];
1103 YY_DO_BEFORE_ACTION;
1106 do_action: /* This label is used only to access EOF actions. */
1110 { /* beginning of action switch */
1111 case 0: /* must back up */
1112 /* undo the effects of YY_DO_BEFORE_ACTION */
1113 *yy_cp = yy_hold_char;
1114 yy_cp = yy_last_accepting_cpos;
1115 yy_current_state = yy_last_accepting_state;
1116 goto yy_find_action;
1120 #line 171 "dtimep.lex"
1136 #line 184 "dtimep.lex"
1152 #line 196 "dtimep.lex"
1166 #line 206 "dtimep.lex"
1182 #line 218 "dtimep.lex"
1196 #line 228 "dtimep.lex"
1210 #line 238 "dtimep.lex"
1222 #line 246 "dtimep.lex"
1244 #line 264 "dtimep.lex"
1264 #line 281 "dtimep.lex"
1269 #line 282 "dtimep.lex"
1274 #line 284 "dtimep.lex"
1283 #line 289 "dtimep.lex"
1292 #line 294 "dtimep.lex"
1297 #line 295 "dtimep.lex"
1302 #line 296 "dtimep.lex"
1303 INIT(); SETZONE(200);
1307 #line 297 "dtimep.lex"
1308 INIT(); SETDST(); SETZONE(2);
1312 #line 298 "dtimep.lex"
1313 INIT(); SETZONE(-500);
1317 #line 299 "dtimep.lex"
1318 INIT(); SETDST(); SETZONE(-500);
1322 #line 300 "dtimep.lex"
1323 INIT(); SETZONE(-600);
1327 #line 301 "dtimep.lex"
1328 INIT(); SETDST(); SETZONE(-600);
1332 #line 302 "dtimep.lex"
1333 INIT(); SETZONE(-700);
1337 #line 303 "dtimep.lex"
1338 INIT(); SETDST(); SETZONE(-700);
1342 #line 304 "dtimep.lex"
1343 INIT(); SETZONE(-800);
1347 #line 305 "dtimep.lex"
1348 INIT(); SETDST(); SETZONE(-800);
1352 #line 306 "dtimep.lex"
1353 INIT(); SETZONE(-330);
1357 #line 307 "dtimep.lex"
1358 INIT(); SETZONE(-400);
1362 #line 308 "dtimep.lex"
1363 INIT(); SETDST(); SETZONE(-400);
1367 #line 309 "dtimep.lex"
1368 INIT(); SETZONE(-900);
1372 #line 310 "dtimep.lex"
1373 INIT(); SETDST(); SETZONE(-900);
1377 #line 311 "dtimep.lex"
1378 INIT(); SETZONE(-1000);
1382 #line 312 "dtimep.lex"
1383 INIT(); SETDST(); SETZONE(-1000);
1387 #line 313 "dtimep.lex"
1388 INIT(); SETDST(); SETZONE(-100);
1392 #line 314 "dtimep.lex"
1395 SETZONE(100*(('a'-1) - tolower(*cp)));
1400 #line 318 "dtimep.lex"
1403 SETZONE(100*('a' - tolower(*cp)));
1408 #line 322 "dtimep.lex"
1411 SETZONE(100*(tolower(*cp) - 'm'));
1416 #line 328 "dtimep.lex"
1421 #line 329 "dtimep.lex"
1426 #line 333 "dtimep.lex"
1429 case YY_STATE_EOF(INITIAL):
1432 case YY_END_OF_BUFFER:
1434 /* Amount of text matched not including the EOB char. */
1435 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
1437 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1438 *yy_cp = yy_hold_char;
1439 YY_RESTORE_YY_MORE_OFFSET
1441 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
1443 /* We're scanning a new file or input source. It's
1444 * possible that this happened because the user
1445 * just pointed yyin at a new source and called
1446 * yylex(). If so, then we have to assure
1447 * consistency between yy_current_buffer and our
1448 * globals. Here is the right place to do so, because
1449 * this is the first action (other than possibly a
1450 * back-up) that will match for the new input source.
1452 yy_n_chars = yy_current_buffer->yy_n_chars;
1453 yy_current_buffer->yy_input_file = yyin;
1454 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
1457 /* Note that here we test for yy_c_buf_p "<=" to the position
1458 * of the first EOB in the buffer, since yy_c_buf_p will
1459 * already have been incremented past the NUL character
1460 * (since all states make transitions on EOB to the
1461 * end-of-buffer state). Contrast this with the test
1464 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1465 { /* This was really a NUL. */
1466 yy_state_type yy_next_state;
1468 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
1470 yy_current_state = yy_get_previous_state();
1472 /* Okay, we're now positioned to make the NUL
1473 * transition. We couldn't have
1474 * yy_get_previous_state() go ahead and do it
1475 * for us because it doesn't know how to deal
1476 * with the possibility of jamming (and we don't
1477 * want to build jamming into it because then it
1478 * will run more slowly).
1481 yy_next_state = yy_try_NUL_trans( yy_current_state );
1483 yy_bp = yytext_ptr + YY_MORE_ADJ;
1485 if ( yy_next_state )
1487 /* Consume the NUL. */
1488 yy_cp = ++yy_c_buf_p;
1489 yy_current_state = yy_next_state;
1496 goto yy_find_action;
1500 else switch ( yy_get_next_buffer() )
1502 case EOB_ACT_END_OF_FILE:
1504 yy_did_buffer_switch_on_eof = 0;
1508 /* Note: because we've taken care in
1509 * yy_get_next_buffer() to have set up
1510 * yytext, we can now set up
1511 * yy_c_buf_p so that if some total
1512 * hoser (like flex itself) wants to
1513 * call the scanner after we return the
1514 * YY_NULL, it'll still work - another
1515 * YY_NULL will get returned.
1517 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
1519 yy_act = YY_STATE_EOF(YY_START);
1525 if ( ! yy_did_buffer_switch_on_eof )
1531 case EOB_ACT_CONTINUE_SCAN:
1533 yytext_ptr + yy_amount_of_matched_text;
1535 yy_current_state = yy_get_previous_state();
1538 yy_bp = yytext_ptr + YY_MORE_ADJ;
1541 case EOB_ACT_LAST_MATCH:
1543 &yy_current_buffer->yy_ch_buf[yy_n_chars];
1545 yy_current_state = yy_get_previous_state();
1548 yy_bp = yytext_ptr + YY_MORE_ADJ;
1549 goto yy_find_action;
1556 "fatal flex scanner internal error--no action found" );
1557 } /* end of action switch */
1558 } /* end of scanning one token */
1559 } /* end of yylex */
1562 /* yy_get_next_buffer - try to read in a new buffer
1564 * Returns a code representing an action:
1565 * EOB_ACT_LAST_MATCH -
1566 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1567 * EOB_ACT_END_OF_FILE - end of file
1570 static int yy_get_next_buffer()
1572 register char *dest = yy_current_buffer->yy_ch_buf;
1573 register char *source = yytext_ptr;
1574 register int number_to_move, i;
1577 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
1579 "fatal flex scanner internal error--end of buffer missed" );
1581 if ( yy_current_buffer->yy_fill_buffer == 0 )
1582 { /* Don't try to fill the buffer, so this is an EOF. */
1583 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
1585 /* We matched a single character, the EOB, so
1586 * treat this as a final EOF.
1588 return EOB_ACT_END_OF_FILE;
1593 /* We matched some text prior to the EOB, first
1596 return EOB_ACT_LAST_MATCH;
1600 /* Try to read more data. */
1602 /* First move last chars to start of buffer. */
1603 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
1605 for ( i = 0; i < number_to_move; ++i )
1606 *(dest++) = *(source++);
1608 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1609 /* don't do the read, it's not guaranteed to return an EOF,
1612 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
1617 yy_current_buffer->yy_buf_size - number_to_move - 1;
1619 while ( num_to_read <= 0 )
1620 { /* Not enough room in the buffer - grow it. */
1621 #ifdef YY_USES_REJECT
1623 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
1626 /* just a shorter name for the current buffer */
1627 YY_BUFFER_STATE b = yy_current_buffer;
1629 int yy_c_buf_p_offset =
1630 (int) (yy_c_buf_p - b->yy_ch_buf);
1632 if ( b->yy_is_our_buffer )
1634 int new_size = b->yy_buf_size * 2;
1636 if ( new_size <= 0 )
1637 b->yy_buf_size += b->yy_buf_size / 8;
1639 b->yy_buf_size *= 2;
1641 b->yy_ch_buf = (char *)
1642 /* Include room in for 2 EOB chars. */
1643 yy_flex_realloc( (void *) b->yy_ch_buf,
1644 b->yy_buf_size + 2 );
1647 /* Can't grow it, we don't own it. */
1650 if ( ! b->yy_ch_buf )
1652 "fatal error - scanner input buffer overflow" );
1654 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1656 num_to_read = yy_current_buffer->yy_buf_size -
1661 if ( num_to_read > YY_READ_BUF_SIZE )
1662 num_to_read = YY_READ_BUF_SIZE;
1664 /* Read in more data. */
1665 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
1666 yy_n_chars, num_to_read );
1668 yy_current_buffer->yy_n_chars = yy_n_chars;
1671 if ( yy_n_chars == 0 )
1673 if ( number_to_move == YY_MORE_ADJ )
1675 ret_val = EOB_ACT_END_OF_FILE;
1681 ret_val = EOB_ACT_LAST_MATCH;
1682 yy_current_buffer->yy_buffer_status =
1683 YY_BUFFER_EOF_PENDING;
1688 ret_val = EOB_ACT_CONTINUE_SCAN;
1690 yy_n_chars += number_to_move;
1691 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1692 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1694 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
1700 /* yy_get_previous_state - get the state just before the EOB char was reached */
1702 static yy_state_type yy_get_previous_state()
1704 register yy_state_type yy_current_state;
1705 register char *yy_cp;
1707 yy_current_state = yy_start;
1709 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
1711 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1712 if ( yy_accept[yy_current_state] )
1714 yy_last_accepting_state = yy_current_state;
1715 yy_last_accepting_cpos = yy_cp;
1717 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1719 yy_current_state = (int) yy_def[yy_current_state];
1720 if ( yy_current_state >= 572 )
1721 yy_c = yy_meta[(unsigned int) yy_c];
1723 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1726 return yy_current_state;
1730 /* yy_try_NUL_trans - try to make a transition on the NUL character
1733 * next_state = yy_try_NUL_trans( current_state );
1736 #ifdef YY_USE_PROTOS
1737 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
1739 static yy_state_type yy_try_NUL_trans( yy_current_state )
1740 yy_state_type yy_current_state;
1743 register int yy_is_jam;
1744 register char *yy_cp = yy_c_buf_p;
1746 register YY_CHAR yy_c = 1;
1747 if ( yy_accept[yy_current_state] )
1749 yy_last_accepting_state = yy_current_state;
1750 yy_last_accepting_cpos = yy_cp;
1752 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1754 yy_current_state = (int) yy_def[yy_current_state];
1755 if ( yy_current_state >= 572 )
1756 yy_c = yy_meta[(unsigned int) yy_c];
1758 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1759 yy_is_jam = (yy_current_state == 571);
1761 return yy_is_jam ? 0 : yy_current_state;
1766 #ifdef YY_USE_PROTOS
1767 static void yyunput( int c, register char *yy_bp )
1769 static void yyunput( c, yy_bp )
1771 register char *yy_bp;
1774 register char *yy_cp = yy_c_buf_p;
1776 /* undo effects of setting up yytext */
1777 *yy_cp = yy_hold_char;
1779 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1780 { /* need to shift things up to make room */
1781 /* +2 for EOB chars. */
1782 register int number_to_move = yy_n_chars + 2;
1783 register char *dest = &yy_current_buffer->yy_ch_buf[
1784 yy_current_buffer->yy_buf_size + 2];
1785 register char *source =
1786 &yy_current_buffer->yy_ch_buf[number_to_move];
1788 while ( source > yy_current_buffer->yy_ch_buf )
1789 *--dest = *--source;
1791 yy_cp += (int) (dest - source);
1792 yy_bp += (int) (dest - source);
1793 yy_current_buffer->yy_n_chars =
1794 yy_n_chars = yy_current_buffer->yy_buf_size;
1796 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1797 YY_FATAL_ERROR( "flex scanner push-back overflow" );
1800 *--yy_cp = (char) c;
1804 yy_hold_char = *yy_cp;
1807 #endif /* ifndef YY_NO_UNPUT */
1811 static int yyinput()
1818 *yy_c_buf_p = yy_hold_char;
1820 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
1822 /* yy_c_buf_p now points to the character we want to return.
1823 * If this occurs *before* the EOB characters, then it's a
1824 * valid NUL; if not, then we've hit the end of the buffer.
1826 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1827 /* This was really a NUL. */
1831 { /* need more input */
1832 int offset = yy_c_buf_p - yytext_ptr;
1835 switch ( yy_get_next_buffer() )
1837 case EOB_ACT_LAST_MATCH:
1838 /* This happens because yy_g_n_b()
1839 * sees that we've accumulated a
1840 * token and flags that we need to
1841 * try matching the token before
1842 * proceeding. But for input(),
1843 * there's no matching to consider.
1844 * So convert the EOB_ACT_LAST_MATCH
1845 * to EOB_ACT_END_OF_FILE.
1848 /* Reset buffer status. */
1853 case EOB_ACT_END_OF_FILE:
1858 if ( ! yy_did_buffer_switch_on_eof )
1867 case EOB_ACT_CONTINUE_SCAN:
1868 yy_c_buf_p = yytext_ptr + offset;
1874 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
1875 *yy_c_buf_p = '\0'; /* preserve yytext */
1876 yy_hold_char = *++yy_c_buf_p;
1883 #ifdef YY_USE_PROTOS
1884 void yyrestart( FILE *input_file )
1886 void yyrestart( input_file )
1890 if ( ! yy_current_buffer )
1891 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
1893 yy_init_buffer( yy_current_buffer, input_file );
1894 yy_load_buffer_state();
1898 #ifdef YY_USE_PROTOS
1899 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
1901 void yy_switch_to_buffer( new_buffer )
1902 YY_BUFFER_STATE new_buffer;
1905 if ( yy_current_buffer == new_buffer )
1908 if ( yy_current_buffer )
1910 /* Flush out information for old buffer. */
1911 *yy_c_buf_p = yy_hold_char;
1912 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
1913 yy_current_buffer->yy_n_chars = yy_n_chars;
1916 yy_current_buffer = new_buffer;
1917 yy_load_buffer_state();
1919 /* We don't actually know whether we did this switch during
1920 * EOF (yywrap()) processing, but the only time this flag
1921 * is looked at is after yywrap() is called, so it's safe
1922 * to go ahead and always set it.
1924 yy_did_buffer_switch_on_eof = 1;
1928 #ifdef YY_USE_PROTOS
1929 void yy_load_buffer_state( void )
1931 void yy_load_buffer_state()
1934 yy_n_chars = yy_current_buffer->yy_n_chars;
1935 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
1936 yyin = yy_current_buffer->yy_input_file;
1937 yy_hold_char = *yy_c_buf_p;
1941 #ifdef YY_USE_PROTOS
1942 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
1944 YY_BUFFER_STATE yy_create_buffer( file, size )
1951 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
1953 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1955 b->yy_buf_size = size;
1957 /* yy_ch_buf has to be 2 characters longer than the size given because
1958 * we need to put in 2 end-of-buffer characters.
1960 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
1961 if ( ! b->yy_ch_buf )
1962 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1964 b->yy_is_our_buffer = 1;
1966 yy_init_buffer( b, file );
1972 #ifdef YY_USE_PROTOS
1973 void yy_delete_buffer( YY_BUFFER_STATE b )
1975 void yy_delete_buffer( b )
1982 if ( b == yy_current_buffer )
1983 yy_current_buffer = (YY_BUFFER_STATE) 0;
1985 if ( b->yy_is_our_buffer )
1986 yy_flex_free( (void *) b->yy_ch_buf );
1988 yy_flex_free( (void *) b );
1992 #ifndef YY_ALWAYS_INTERACTIVE
1993 #ifndef YY_NEVER_INTERACTIVE
1994 extern int isatty YY_PROTO(( int ));
1998 #ifdef YY_USE_PROTOS
1999 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
2001 void yy_init_buffer( b, file )
2008 yy_flush_buffer( b );
2010 b->yy_input_file = file;
2011 b->yy_fill_buffer = 1;
2013 #if YY_ALWAYS_INTERACTIVE
2014 b->yy_is_interactive = 1;
2016 #if YY_NEVER_INTERACTIVE
2017 b->yy_is_interactive = 0;
2019 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2025 #ifdef YY_USE_PROTOS
2026 void yy_flush_buffer( YY_BUFFER_STATE b )
2028 void yy_flush_buffer( b )
2038 /* We always need two end-of-buffer characters. The first causes
2039 * a transition to the end-of-buffer state. The second causes
2040 * a jam in that state.
2042 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2043 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2045 b->yy_buf_pos = &b->yy_ch_buf[0];
2048 b->yy_buffer_status = YY_BUFFER_NEW;
2050 if ( b == yy_current_buffer )
2051 yy_load_buffer_state();
2055 #ifndef YY_NO_SCAN_BUFFER
2056 #ifdef YY_USE_PROTOS
2057 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
2059 YY_BUFFER_STATE yy_scan_buffer( base, size )
2067 base[size-2] != YY_END_OF_BUFFER_CHAR ||
2068 base[size-1] != YY_END_OF_BUFFER_CHAR )
2069 /* They forgot to leave room for the EOB's. */
2072 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2074 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2076 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
2077 b->yy_buf_pos = b->yy_ch_buf = base;
2078 b->yy_is_our_buffer = 0;
2079 b->yy_input_file = 0;
2080 b->yy_n_chars = b->yy_buf_size;
2081 b->yy_is_interactive = 0;
2083 b->yy_fill_buffer = 0;
2084 b->yy_buffer_status = YY_BUFFER_NEW;
2086 yy_switch_to_buffer( b );
2093 #ifndef YY_NO_SCAN_STRING
2094 #ifdef YY_USE_PROTOS
2095 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
2097 YY_BUFFER_STATE yy_scan_string( yy_str )
2098 yyconst char *yy_str;
2102 for ( len = 0; yy_str[len]; ++len )
2105 return yy_scan_bytes( yy_str, len );
2110 #ifndef YY_NO_SCAN_BYTES
2111 #ifdef YY_USE_PROTOS
2112 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
2114 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
2115 yyconst char *bytes;
2124 /* Get memory for full buffer, including space for trailing EOB's. */
2126 buf = (char *) yy_flex_alloc( n );
2128 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2130 for ( i = 0; i < len; ++i )
2133 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
2135 b = yy_scan_buffer( buf, n );
2137 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2139 /* It's okay to grow etc. this buffer, and we should throw it
2140 * away when we're done.
2142 b->yy_is_our_buffer = 1;
2149 #ifndef YY_NO_PUSH_STATE
2150 #ifdef YY_USE_PROTOS
2151 static void yy_push_state( int new_state )
2153 static void yy_push_state( new_state )
2157 if ( yy_start_stack_ptr >= yy_start_stack_depth )
2161 yy_start_stack_depth += YY_START_STACK_INCR;
2162 new_size = yy_start_stack_depth * sizeof( int );
2164 if ( ! yy_start_stack )
2165 yy_start_stack = (int *) yy_flex_alloc( new_size );
2168 yy_start_stack = (int *) yy_flex_realloc(
2169 (void *) yy_start_stack, new_size );
2171 if ( ! yy_start_stack )
2173 "out of memory expanding start-condition stack" );
2176 yy_start_stack[yy_start_stack_ptr++] = YY_START;
2183 #ifndef YY_NO_POP_STATE
2184 static void yy_pop_state()
2186 if ( --yy_start_stack_ptr < 0 )
2187 YY_FATAL_ERROR( "start-condition stack underflow" );
2189 BEGIN(yy_start_stack[yy_start_stack_ptr]);
2194 #ifndef YY_NO_TOP_STATE
2195 static int yy_top_state()
2197 return yy_start_stack[yy_start_stack_ptr - 1];
2201 #ifndef YY_EXIT_FAILURE
2202 #define YY_EXIT_FAILURE 2
2205 #ifdef YY_USE_PROTOS
2206 static void yy_fatal_error( yyconst char msg[] )
2208 static void yy_fatal_error( msg )
2212 (void) fprintf( stderr, "%s\n", msg );
2213 exit( YY_EXIT_FAILURE );
2218 /* Redefine yyless() so it works in section 3 code. */
2224 /* Undo effects of setting up yytext. */ \
2225 yytext[yyleng] = yy_hold_char; \
2226 yy_c_buf_p = yytext + n; \
2227 yy_hold_char = *yy_c_buf_p; \
2228 *yy_c_buf_p = '\0'; \
2234 /* Internal utility routines. */
2237 #ifdef YY_USE_PROTOS
2238 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
2240 static void yy_flex_strncpy( s1, s2, n )
2247 for ( i = 0; i < n; ++i )
2252 #ifdef YY_NEED_STRLEN
2253 #ifdef YY_USE_PROTOS
2254 static int yy_flex_strlen( yyconst char *s )
2256 static int yy_flex_strlen( s )
2261 for ( n = 0; s[n]; ++n )
2269 #ifdef YY_USE_PROTOS
2270 static void *yy_flex_alloc( yy_size_t size )
2272 static void *yy_flex_alloc( size )
2276 return (void *) malloc( size );
2279 #ifdef YY_USE_PROTOS
2280 static void *yy_flex_realloc( void *ptr, yy_size_t size )
2282 static void *yy_flex_realloc( ptr, size )
2287 /* The cast to (char *) in the following accommodates both
2288 * implementations that use char* generic pointers, and those
2289 * that use void* generic pointers. It works with the latter
2290 * because both ANSI C and C++ allow castless assignment from
2291 * any pointer type to void*, and deal with argument conversions
2292 * as though doing an assignment.
2294 return (void *) realloc( (char *) ptr, size );
2297 #ifdef YY_USE_PROTOS
2298 static void yy_flex_free( void *ptr )
2300 static void yy_flex_free( ptr )
2314 #line 333 "dtimep.lex"