Take out memory hints, since we are assuming flex over lex, so this shouldn't be...
[mmh] / sbr / dtimep.c
1 /* A lexical scanner generated by flex */
2
3 /* Scanner skeleton version:
4  * $Header$
5  */
6
7 #define FLEX_SCANNER
8 #define YY_FLEX_MAJOR_VERSION 2
9 #define YY_FLEX_MINOR_VERSION 5
10
11 #include <stdio.h>
12
13
14 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
15 #ifdef c_plusplus
16 #ifndef __cplusplus
17 #define __cplusplus
18 #endif
19 #endif
20
21
22 #ifdef __cplusplus
23
24 #include <stdlib.h>
25 #include <unistd.h>
26
27 /* Use prototypes in function declarations. */
28 #define YY_USE_PROTOS
29
30 /* The "const" storage-class-modifier is valid. */
31 #define YY_USE_CONST
32
33 #else   /* ! __cplusplus */
34
35 #if __STDC__
36
37 #define YY_USE_PROTOS
38 #define YY_USE_CONST
39
40 #endif  /* __STDC__ */
41 #endif  /* ! __cplusplus */
42
43 #ifdef __TURBOC__
44  #pragma warn -rch
45  #pragma warn -use
46 #include <io.h>
47 #include <stdlib.h>
48 #define YY_USE_CONST
49 #define YY_USE_PROTOS
50 #endif
51
52 #ifdef YY_USE_CONST
53 #define yyconst const
54 #else
55 #define yyconst
56 #endif
57
58
59 #ifdef YY_USE_PROTOS
60 #define YY_PROTO(proto) proto
61 #else
62 #define YY_PROTO(proto) ()
63 #endif
64
65 /* Returned upon end-of-file. */
66 #define YY_NULL 0
67
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
71  * double cast.
72  */
73 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
74
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.
78  */
79 #define BEGIN yy_start = 1 + 2 *
80
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
83  * compatibility.
84  */
85 #define YY_START ((yy_start - 1) / 2)
86 #define YYSTATE YY_START
87
88 /* Action number for EOF rule of a given start state. */
89 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
90
91 /* Special action meaning "start processing a new file". */
92 #define YY_NEW_FILE yyrestart( yyin )
93
94 #define YY_END_OF_BUFFER_CHAR 0
95
96 /* Size of default input buffer. */
97 #define YY_BUF_SIZE 16384
98
99 typedef struct yy_buffer_state *YY_BUFFER_STATE;
100
101 extern int yyleng;
102 extern FILE *yyin, *yyout;
103
104 #define EOB_ACT_CONTINUE_SCAN 0
105 #define EOB_ACT_END_OF_FILE 1
106 #define EOB_ACT_LAST_MATCH 2
107
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:
111  *
112  *      if ( condition_holds )
113  *              yyless( 5 );
114  *      else
115  *              do_something_else();
116  *
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.
120  */
121
122 /* Return all but the first 'n' matched characters back to the input stream. */
123
124 #define yyless(n) \
125         do \
126                 { \
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 */ \
132                 } \
133         while ( 0 )
134
135 #define unput(c) yyunput( c, yytext_ptr )
136
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).
140  */
141 typedef unsigned int yy_size_t;
142
143
144 struct yy_buffer_state
145         {
146         FILE *yy_input_file;
147
148         char *yy_ch_buf;                /* input buffer */
149         char *yy_buf_pos;               /* current position in input buffer */
150
151         /* Size of input buffer in bytes, not including room for EOB
152          * characters.
153          */
154         yy_size_t yy_buf_size;
155
156         /* Number of characters read into yy_ch_buf, not including EOB
157          * characters.
158          */
159         int yy_n_chars;
160
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
163          * delete it.
164          */
165         int yy_is_our_buffer;
166
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
170          * each newline.
171          */
172         int yy_is_interactive;
173
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
176          * not.
177          */
178         int yy_at_bol;
179
180         /* Whether to try to fill the input buffer when we reach the
181          * end of it.
182          */
183         int yy_fill_buffer;
184
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.
193          *
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.
197          */
198 #define YY_BUFFER_EOF_PENDING 2
199         };
200
201 static YY_BUFFER_STATE yy_current_buffer = 0;
202
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
205  * "scanner state".
206  */
207 #define YY_CURRENT_BUFFER yy_current_buffer
208
209
210 /* yy_hold_char holds the character lost when yytext is formed. */
211 static char yy_hold_char;
212
213 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
214
215
216 int yyleng;
217
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 */
222
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 ...
225  */
226 static int yy_did_buffer_switch_on_eof;
227
228 void yyrestart YY_PROTO(( FILE *input_file ));
229
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 )
237
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 ));
241
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 * ));
245
246 #define yy_new_buffer yy_create_buffer
247
248 #define yy_set_interactive(is_interactive) \
249         { \
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; \
253         }
254
255 #define yy_set_bol(at_bol) \
256         { \
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; \
260         }
261
262 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
263
264 typedef unsigned char YY_CHAR;
265 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
266 typedef int yy_state_type;
267 extern char *yytext;
268 #define yytext_ptr yytext
269
270 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
271 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
272 static int yy_get_next_buffer YY_PROTO(( void ));
273 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
274
275 /* Done after the current pattern has been matched and before the
276  * corresponding action - sets up yytext.
277  */
278 #define YY_DO_BEFORE_ACTION \
279         yytext_ptr = yy_bp; \
280         yyleng = (int) (yy_cp - yy_bp); \
281         yy_hold_char = *yy_cp; \
282         *yy_cp = '\0'; \
283         yy_c_buf_p = yy_cp;
284
285 #define YY_NUM_RULES 31
286 #define YY_END_OF_BUFFER 32
287 static yyconst short int yy_accept[636] =
288     {   0,
289         0,    0,   32,   30,   30,   30,   30,   30,   30,   30,
290        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
291        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
292        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
293        30,   30,    0,    0,    0,    0,    0,    0,    0,    0,
294         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
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,   14,    0,
299
300         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
301         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
302         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
303         0,    0,    0,   14,    0,    0,    0,    0,    0,    0,
304         0,    0,    0,    0,    0,    0,   29,   26,   25,    0,
305         0,   19,   18,    0,   17,   16,    0,    0,   15,   28,
306        27,    0,    0,    0,   21,   20,    0,    0,    0,   24,
307         0,    0,   23,   22,    0,    0,    0,    0,    0,    0,
308         0,    0,   29,   29,   29,   29,   29,   29,   29,   29,
309        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
310
311        29,   12,   13,    0,    0,    0,    0,    0,    0,    0,
312         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
313         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
314         0,    0,    0,    0,    0,    0,    0,    0,   12,   13,
315         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
316         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
317         0,    0,    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,    9,    9,    0,    0,    0,    0,
321
322         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
323         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
324         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
325         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
326         9,    0,    0,    0,    0,    0,    0,    0,    0,    0,
327         0,    0,    0,    0,    0,    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,    9,    7,    7,    0,    0,    0,
331         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
332
333         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
334         0,    0,    0,    0,    0,    0,   10,   11,    0,    0,
335         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
336         0,    7,    0,    0,    0,    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         0,    0,    0,    0,    0,    0,    0,    0,    7,    0,
340         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
341         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
342         0,    0,    0,    0,    8,    0,    0,    0,    0,    0,
343
344         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
345         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
346         0,    0,    0,    6,    6,    6,    6,    6,    6,    6,
347         0,    0,    0,    0,    0,    0,    0,    0,    0,    5,
348         0,    5,    0,    0,    0,    0,    0,    0,    3,    0,
349         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
350         0,    0,    0,    0,    0,    0,    0,    0,    0,    5,
351         5,    5,    0,    0,    8,    0,    0,    0,    0,    0,
352         0,    0,    0,    0,    0,    0,    0,    0,    0,    5,
353         0,    0,    6,    6,    0,    6,    0,    0,    0,    0,
354
355         0,    0,    0,    0,    0,    0,    3,    0,    0,    6,
356         0,    0,    0,    0,    0,    0,    6,    6,    0,    2,
357         4,    1,    1,    0,    6,    0,    0,    0,    1,    0,
358         0,    1,    2,    4,    0
359     } ;
360
361 static yyconst int yy_ec[256] =
362     {   0,
363         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
364         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
365         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
366         1,    2,    1,    1,    1,    1,    1,    1,    1,    1,
367         1,    1,    4,    5,    6,    1,    7,    8,    9,    8,
368         8,    8,    8,    8,    8,    8,    8,   10,    1,    1,
369         1,    1,    1,    1,   11,   12,   13,   14,   15,   16,
370        17,   18,   12,   19,   12,   12,   20,   21,   22,   23,
371        12,   12,   24,   25,   26,   12,   27,   12,   12,   12,
372        28,    1,   29,    1,    1,    1,   30,   31,   32,   33,
373
374        34,   35,   36,   37,   38,   39,   40,   41,   42,   43,
375        44,   45,   40,   46,   47,   48,   49,   50,   51,   40,
376        52,   40,    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,
380         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
385         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
386         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
387         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
388         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
389         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
390         1,    1,    1,    1,    1
391     } ;
392
393 static yyconst int yy_meta[53] =
394     {   0,
395         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
396         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
397         2,    2,    2,    2,    2,    2,    2,    1,    1,    3,
398         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
399         3,    3,    3,    3,    4,    3,    3,    3,    4,    3,
400         3,    3
401     } ;
402
403 static yyconst short int yy_base[640] =
404     {   0,
405         0,    0, 1082, 1083,   45,   47,   98,   87,   63,   89,
406        75,  101,  103,  102,  104,   84,  116,  107,  121,  128,
407       109,  110,  116,  110,  139,  124,    0,  130, 1047,  131,
408       133, 1038,  133,   27,  142,  137, 1047,  135,  153,  139,
409      1030, 1043,  182,  184,  171,  180,    0,  182,  183,  184,
410       185,  186,  187,  191,  179,    0,  180,  181, 1034,  184,
411       185, 1028,  186, 1026,  232,  212,  223,    0, 1048, 1047,
412      1025, 1034, 1044, 1043, 1035, 1041, 1040, 1033, 1025, 1037,
413      1036, 1035, 1016,  181, 1033, 1032,  189, 1013, 1030, 1004,
414      1005, 1027, 1026, 1002, 1004, 1005,  998, 1012,    0, 1012,
415
416      1014,  998,    0,  994,  995,  992, 1003,  990,  989, 1004,
417       987,  986, 1002,  994,  983,  982,  981,  985,  195,  193,
418       979,  983,  977,  974,  975,  974,  973,  972,  971,  973,
419       974,  967,  981,    0,  981,  241,  249,   74,  979,  978,
420       193,  981,  966,  977,  974,  274, 1083, 1083, 1083,  235,
421       238, 1083, 1083,  257, 1083, 1083,  242,  259, 1083, 1083,
422      1083,  245,  253,  261, 1083, 1083,  258, 1005,  264, 1083,
423       266,  268, 1083, 1083,  284,  100,  291,  296,  297,  302,
424       977,  976,  270,  276,  275,  282,  301,  283,  308,  309,
425       314, 1002,  315,  313,  311,  316,  320,  321,  325,  333,
426
427       334,  332,  341,  957,  966,  969,  969,  956,  288,  305,
428       948,  949,  951,  344,  352,  354,  954,  947,  951,  943,
429       379,  989,  960,  959,  986,  985,  949,  955,  942,  952,
430       936,  947,  950,  932,  945,  943,  948,  947, 1083, 1083,
431       335,  312,  362,  364,  367,  365,  368,  372,  972,  373,
432       376,  377,  374,  376,  422,  971,  924,  940,  940,  426,
433       125,  935,  934,  342,  937,  922,  933,  930,  911,  916,
434       959,  908,  928,  924,  924,  914,  903,  921,  923,  905,
435       931,  930,  430,  908,  901,  905,  897,  915,  942,  941,
436       905,  899,  909,  905,  434,  438,  442,  936,  384,  935,
437
438       902,  889,  450,  932,  887,  896,  899,  899,  886,  351,
439       359,  878,  879,  881,  443,  873,  451,  890,  877,  892,
440       890,  452,  890,  867,  885,  875,  874,  450,  454,  913,
441       866,  882,  882,  865,  908,  878,  874,  865,  473,  459,
442       482,  468,  470,  860,  853,  370,  870,  869,  411,  872,
443       857,  868,  865,  395,  406,  471,  463,  447,  435,  484,
444       374,  896,  486,  493,  496,  851,  894,  843,  860,  841,
445       497,  862,  862,  861,  498,  502,  887,  854,  841,  834,
446       851,  838,  852,  504,  880,  514,  519,  879,  878,  833,
447       842,  845,  845,  832,  460,  479,  824,  825,  827,  524,
448
449       830,  823,  827,  819,  837,  864,  863,  827,  821,  831,
450       827,  858,  533,  813,  534,  806, 1083, 1083,  532,  521,
451       540,  811,  804,  809,  852,  819,  842,  537,  548,  849,
452       543,  551,  541,  506,  513,  515,  552,  555,  560,  556,
453       848,  563,  561,  564,  569,  847,  800,  816,  816,  799,
454       842,  812,  808,  799,  838,  565,  572,  837,  836,  835,
455       834,  789,  576,  788,  789,  557,  549,  798,  587,  600,
456       790,  783,  787,  779,  797,  824,  823,  787,  781,  791,
457       787,  602,  818,  598,  817,  784,  771,  764,  781,  768,
458       782,  802,  605,  809,  800,  771,  765,  759,  763,  756,
459
460       770,  770,  607,  609,  800,  753,  769,  769,  752,  795,
461       765,  761,  752,  611,  614,  623,  747,  740,  745,  788,
462       755,  618,  620,  755,  754,  737,  752,  738,  736,  739,
463       628,  631,  779,  746,  733,  726,  743,  730,  744,  633,
464       636,  644,  639,  642,  772,  771,  770,  725,  760,  647,
465       739,  738,  721,  736,  718,  731,  729,  655,  650,  658,
466       716,  709,  714,  757,  724,  660,  755,  662,  664,  672,
467       674,  682,  754,  677, 1083,  703,  702,  720,  700,  718,
468       720,  702,  684,  746,  745,  744,  743,  698,  687,  673,
469       696,  680, 1083, 1083,  713, 1083,  712,  684,  632,  651,
470
471       691,  632,  583,  693,  701,  696, 1083,  539,  524, 1083,
472       539,  699,  703,  705,  707,  709, 1083, 1083,  377,  403,
473       309,  711,  713,  108, 1083,  715,  717,  719,  721,  723,
474       725, 1083, 1083, 1083, 1083,  733,  735,   73,  737
475     } ;
476
477 static yyconst short int yy_def[640] =
478     {   0,
479       635,    1,  635,  635,  635,  635,  635,  636,  636,  636,
480       636,   10,   10,   10,   10,  636,   10,   10,   10,   10,
481       636,  636,  636,   13,  635,  637,  637,  637,  637,  637,
482       637,  637,  637,  637,  637,  637,  637,  637,  637,  637,
483       637,  637,  635,  635,   10,   10,   10,   10,   10,   10,
484        10,   10,   10,   10,  637,  637,  637,  637,  637,  637,
485       637,  637,  637,  637,  635,  635,  635,  638,  638,  638,
486       635,  635,  638,  638,  635,  638,  638,  635,  635,  638,
487       638,  638,  635,  635,  638,  638,  635,  635,  638,  635,
488       635,  638,  638,  635,  635,  635,  635,  635,  638,  635,
489
490       635,  635,  639,  639,  639,  639,  639,  639,  639,  639,
491       639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
492       639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
493       639,  639,  639,  639,  639,  635,  635,  635,  635,  635,
494       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
495       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
496       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
497       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
498       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
499       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
500
501       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
502       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
503       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
504       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
505       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
506       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
507       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
508       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
509       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
510       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
511
512       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
513       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
514       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
515       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
516       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
517       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
518       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
519       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
520       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
521       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
522
523       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
524       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
525       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
526       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
527       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
528       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
529       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
530       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
531       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
532       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
533
534       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
535       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
536       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
537       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
538       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
539       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
540       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
541       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
542       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
543       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
544
545       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
546       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
547       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
548       635,  635,  635,  635,    0,  635,  635,  635,  635
549     } ;
550
551 static yyconst short int yy_nxt[1136] =
552     {   0,
553         4,    4,    4,    5,    4,    6,    4,    7,    7,    4,
554         8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
555        18,   19,   20,   21,   22,   23,   24,   25,    4,   26,
556        27,   28,   29,   30,   31,   32,   33,   27,   34,   27,
557        27,   35,   36,   37,   38,   27,   39,   40,   41,   27,
558        42,   27,   43,   43,   44,   44,  118,   45,   46,   47,
559        46,   48,   46,   49,   50,   46,   51,   52,   46,   53,
560        46,   46,   54,   46,  147,  119,   55,   56,   57,   56,
561        58,   56,   59,   60,   56,   56,   56,   56,   61,   62,
562        56,   63,   56,   56,   56,   64,   56,   56,   56,   65,
563
564        69,  216,   73,   66,   66,   67,   67,  635,   75,  605,
565        70,  635,   74,   83,   76,   68,   68,   81,  204,  635,
566        68,   80,  205,  635,   77,   68,   68,   82,  635,   85,
567        89,   71,   84,  635,   68,   72,   78,  635,   94,   86,
568        99,   92,   95,  100,   68,   87,   97,  232,   79,  101,
569        90,   93,   91,  635,  635,  635,  104,   96,   98,   88,
570       635,  102,  108,  111,  635,  116,  113,  127,  105,  305,
571       106,  120,  107,  306,  121,  132,  109,  112,  114,  117,
572       124,  128,  129,  125,   69,  122,  130,  133,  123,  136,
573       136,  137,  137,   68,   70,   76,   68,   81,   85,   68,
574
575        92,  131,   80,   68,   68,   77,   68,   82,   86,   89,
576        93,  104,  108,  111,   68,   99,  116,  121,  127,  146,
577       146,  163,  208,  164,   65,  106,  109,  112,   66,   66,
578       117,  123,  128,   65,  167,  189,  216,  190,  191,  216,
579       168,  209,  138,  216,  192,  139,  216,  140,  202,  202,
580       141,  142,  143,  144,  216,  145,  203,  203,  216,  216,
581       221,  138,  216,  222,  139,  221,  140,  216,  222,  216,
582       141,  216,  217,  142,  143,  144,  216,  216,  145,  214,
583       214,  215,  215,  216,  216,  221,  218,  220,  222,  227,
584       219,  223,  221,  224,  226,  222,  228,  221,  221,  229,
585
586       222,  222,  221,  221,  225,  222,  222,  217,  219,  216,
587       216,  230,  216,  283,  216,  216,  221,  221,  627,  222,
588       222,  216,  221,  233,  218,  222,  221,  220,  246,  222,
589       247,  224,  231,  223,  221,  221,  283,  222,  222,  239,
590       239,  234,  226,  235,  236,  227,  229,  228,  240,  240,
591       248,  253,  254,  233,  230,  216,  249,  214,  214,  225,
592       285,  255,  255,  283,  231,  283,  283,  232,  283,  283,
593       234,  309,  284,  283,  283,  400,  236,  283,  283,  235,
594       221,  295,  295,  296,  296,  297,  260,  260,  298,  261,
595       310,  359,  262,  360,  263,  286,  400,  264,  265,  266,
596
597       267,  290,  268,  291,  361,  408,  292,  400,  261,  287,
598       362,  262,  626,  263,  390,  288,  289,  264,  391,  293,
599       265,  266,  267,  297,  294,  268,  298,  303,  625,  299,
600       299,  283,  401,  304,  304,  339,  400,  328,  329,  339,
601       394,  340,  340,  297,  221,  341,  341,  222,  400,  342,
602       343,  303,  221,  221,  402,  222,  222,  375,  375,  395,
603       346,  376,  376,  347,  400,  348,  385,  385,  349,  350,
604       351,  352,  400,  353,  339,  386,  386,  387,  387,  346,
605       384,  384,  347,  339,  348,  400,  406,  400,  349,  385,
606       385,  350,  351,  352,  400,  405,  353,  400,  221,  419,
607
608       438,  222,  439,  419,  403,  420,  420,  470,  404,  421,
609       421,  427,  427,  428,  470,  429,  470,  407,  430,  409,
610       429,  431,  431,  430,  440,  400,  432,  432,  458,  458,
611       441,  445,  445,  419,  221,  221,  410,  222,  222,  457,
612       457,  419,  470,  411,  463,  463,  473,  458,  458,  429,
613       469,  469,  429,  470,  472,  430,  470,  470,  469,  469,
614       474,  470,  470,  464,  470,  470,  221,  465,  619,  222,
615       482,  466,  467,  483,  468,  618,  484,  484,  471,  492,
616       492,  493,  464,  495,  495,  500,  498,  478,  429,  465,
617       617,  430,  604,  477,  466,  467,  479,  501,  468,  482,
618
619       475,  470,  483,  482,  480,  499,  476,  503,  504,  514,
620       515,  481,  522,  522,  531,  531,  532,  532,  540,  540,
621       541,  542,  542,  541,  516,  549,  549,  550,  550,  558,
622       543,  544,  558,  470,  566,  559,  559,  567,  560,  560,
623       568,  568,  541,  569,  569,  566,  571,  571,  567,  572,
624       572,  570,  570,  541,  575,  575,  558,  584,  584,  558,
625       601,  566,  583,  583,  611,  584,  584,  589,  589,  590,
626       590,  591,  591,  566,  566,  566,  567,  567,  567,  590,
627       590,  568,  568,  566,  592,  592,  567,  607,  607,  570,
628       570,  600,  600,  601,  603,  603,  604,  605,  612,  612,
629
630       613,  613,  605,  616,  616,  606,  620,  620,  614,  615,
631       621,  621,  622,  622,  623,  623,  624,  624,  628,  628,
632       629,  629,  630,  630,  631,  631,  632,  632,  632,  632,
633       633,  633,  634,  634,   68,  610,   68,  103,  103,  147,
634       147,  609,  608,  602,  470,  470,  470,  558,  599,  598,
635       597,  596,  595,  594,  593,  400,  566,  588,  470,  587,
636       586,  585,  582,  581,  580,  579,  578,  577,  576,  574,
637       573,  400,  400,  400,  565,  564,  563,  441,  562,  561,
638       470,  557,  556,  555,  554,  553,  552,  551,  548,  400,
639       547,  546,  545,  539,  538,  537,  470,  536,  535,  534,
640
641       533,  470,  530,  529,  528,  527,  526,  525,  524,  523,
642       283,  493,  521,  520,  519,  362,  518,  517,  400,  516,
643       513,  512,  511,  510,  470,  470,  509,  508,  507,  506,
644       505,  502,  497,  496,  494,  283,  283,  283,  419,  216,
645       491,  490,  489,  400,  488,  487,  486,  485,  400,  470,
646       429,  428,  462,  283,  461,  460,  459,  456,  455,  216,
647       454,  453,  452,  451,  400,  400,  450,  449,  448,  447,
648       446,  444,  443,  442,  437,  436,  435,  434,  433,  216,
649       216,  339,  426,  425,  424,  249,  423,  422,  283,  418,
650       417,  416,  415,  414,  413,  216,  412,  400,  399,  398,
651
652       397,  396,  393,  392,  389,  388,  383,  382,  381,  283,
653       380,  379,  378,  377,  283,  374,  373,  372,  371,  370,
654       369,  368,  367,  366,  168,  365,  364,  363,  358,  357,
655       356,  355,  354,  303,  345,  344,  216,  297,  338,  337,
656       336,  335,  283,  283,  334,  333,  332,  331,  330,  327,
657       326,  325,  324,  323,  322,  321,  320,  319,  318,  317,
658       216,  316,  315,  314,  313,  312,  311,  308,  307,  302,
659       301,  300,  216,  283,  282,  281,  280,  279,  278,  277,
660       276,  275,  274,  273,  272,  271,  216,  216,  270,  269,
661       221,  259,  258,  257,  256,  252,  251,  250,  245,  244,
662
663       243,  242,  241,  216,  238,  237,  216,  213,  212,  211,
664       210,  207,  206,  201,  200,  199,  198,  197,  196,  174,
665       173,  195,  170,  194,  166,  193,  165,  188,  161,  160,
666       159,  187,  186,  156,  155,  185,  153,  152,  184,  149,
667       183,  148,  182,  181,  180,  179,  178,  177,  176,  175,
668       174,  173,  172,  171,  170,  169,  166,  165,  162,  161,
669       160,  159,  158,  157,  156,  155,  154,  153,  152,  151,
670       150,  149,  148,  134,  125,  115,  135,  134,  126,  115,
671       110,  635,    3,  635,  635,  635,  635,  635,  635,  635,
672       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
673
674       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
675       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
676       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
677       635,  635,  635,  635,  635
678     } ;
679
680 static yyconst short int yy_chk[1136] =
681     {   0,
682         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
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,    5,    5,    6,    6,   34,    6,    6,    6,
688         6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
689         6,    6,    6,    6,  638,   34,    6,    6,    6,    6,
690         6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
691         6,    6,    6,    6,    6,    6,    6,    6,    6,    7,
692
693         8,  176,   10,    7,    7,    7,    7,    9,   11,  624,
694         8,    9,   10,   16,   12,   14,   13,   15,  138,   11,
695        18,   14,  138,   11,   12,   14,   13,   15,   16,   17,
696        18,    8,   16,   10,   19,    8,   13,   10,   21,   17,
697        23,   20,   21,   24,   19,   17,   22,  176,   13,   25,
698        18,   20,   19,   21,   22,   24,   26,   21,   22,   17,
699        23,   25,   28,   30,   23,   33,   31,   38,   26,  261,
700        26,   35,   26,  261,   35,   40,   28,   30,   31,   33,
701        36,   38,   39,   36,   45,   35,   39,   40,   35,   43,
702        43,   44,   44,   46,   45,   48,   49,   50,   51,   52,
703
704        53,   39,   49,   46,   54,   48,   49,   50,   51,   52,
705        53,   55,   57,   58,   54,   54,   60,   61,   63,   66,
706        66,   84,  141,   84,   67,   55,   57,   58,   67,   67,
707        60,   61,   63,   65,   87,  119,  150,  119,  120,  151,
708        87,  141,   65,  157,  120,   65,  162,   65,  136,  136,
709        65,   65,   65,   65,  163,   65,  137,  137,  154,  167,
710       158,   65,  164,  158,   65,  169,   65,  171,  169,  172,
711        65,  183,  150,   65,   65,   65,  185,  184,   65,  146,
712       146,  146,  146,  186,  188,  175,  151,  157,  175,  167,
713       154,  158,  177,  162,  164,  177,  169,  178,  179,  171,
714
715       178,  179,  187,  180,  163,  187,  180,  183,  185,  189,
716       190,  172,  195,  242,  194,  191,  193,  196,  621,  193,
717       196,  197,  198,  177,  184,  198,  199,  186,  209,  199,
718       209,  188,  175,  187,  200,  201,  241,  200,  201,  202,
719       202,  178,  190,  179,  180,  191,  194,  193,  203,  203,
720       210,  214,  214,  198,  195,  216,  210,  215,  215,  189,
721       242,  216,  216,  243,  196,  244,  246,  197,  245,  247,
722       199,  264,  241,  248,  250,  361,  201,  251,  252,  200,
723       221,  253,  253,  254,  254,  299,  221,  221,  299,  221,
724       264,  310,  221,  310,  221,  243,  354,  221,  221,  221,
725
726       221,  247,  221,  248,  311,  361,  250,  355,  221,  244,
727       311,  221,  620,  221,  346,  245,  246,  221,  346,  251,
728       221,  221,  221,  255,  252,  221,  255,  260,  619,  255,
729       255,  283,  354,  260,  260,  295,  359,  283,  283,  296,
730       349,  295,  295,  297,  315,  296,  296,  315,  358,  297,
731       297,  303,  317,  322,  355,  317,  322,  328,  328,  349,
732       303,  329,  329,  303,  357,  303,  340,  340,  303,  303,
733       303,  303,  356,  303,  339,  342,  342,  343,  343,  303,
734       339,  339,  303,  341,  303,  360,  359,  363,  303,  341,
735       341,  303,  303,  303,  364,  358,  303,  365,  371,  375,
736
737       395,  371,  395,  376,  356,  375,  375,  434,  357,  376,
738       376,  384,  384,  384,  435,  386,  436,  360,  386,  363,
739       387,  386,  386,  387,  396,  400,  387,  387,  420,  420,
740       396,  400,  400,  419,  413,  415,  364,  413,  415,  419,
741       419,  421,  433,  365,  428,  428,  435,  421,  421,  429,
742       431,  431,  432,  437,  434,  432,  438,  440,  432,  432,
743       436,  439,  443,  429,  442,  444,  456,  429,  611,  456,
744       445,  429,  429,  445,  429,  609,  445,  445,  433,  457,
745       457,  457,  429,  463,  463,  467,  466,  440,  469,  429,
746       608,  469,  603,  439,  429,  429,  442,  467,  429,  484,
747
748       437,  470,  484,  482,  443,  466,  438,  470,  470,  482,
749       482,  444,  493,  493,  503,  503,  504,  504,  514,  514,
750       514,  515,  515,  515,  516,  522,  522,  523,  523,  531,
751       516,  516,  532,  602,  540,  531,  531,  540,  532,  532,
752       540,  540,  540,  541,  541,  542,  543,  543,  542,  544,
753       544,  542,  542,  542,  550,  550,  558,  559,  559,  560,
754       600,  566,  558,  558,  599,  560,  560,  566,  566,  568,
755       568,  569,  569,  570,  590,  571,  570,  590,  571,  570,
756       570,  571,  571,  572,  574,  574,  572,  592,  592,  572,
757       572,  583,  583,  583,  589,  589,  589,  591,  601,  601,
758
759       604,  604,  605,  606,  606,  591,  612,  612,  605,  605,
760       613,  613,  614,  614,  615,  615,  616,  616,  622,  622,
761       623,  623,  626,  626,  627,  627,  628,  628,  629,  629,
762       630,  630,  631,  631,  636,  598,  636,  637,  637,  639,
763       639,  597,  595,  588,  587,  586,  585,  584,  582,  581,
764       580,  579,  578,  577,  576,  573,  567,  565,  564,  563,
765       562,  561,  557,  556,  555,  554,  553,  552,  551,  549,
766       548,  547,  546,  545,  539,  538,  537,  536,  535,  534,
767       533,  530,  529,  528,  527,  526,  525,  524,  521,  520,
768       519,  518,  517,  513,  512,  511,  510,  509,  508,  507,
769
770       506,  505,  502,  501,  500,  499,  498,  497,  496,  495,
771       494,  492,  491,  490,  489,  488,  487,  486,  485,  483,
772       481,  480,  479,  478,  477,  476,  475,  474,  473,  472,
773       471,  468,  465,  464,  462,  461,  460,  459,  458,  455,
774       454,  453,  452,  451,  450,  449,  448,  447,  446,  441,
775       430,  427,  426,  425,  424,  423,  422,  416,  414,  412,
776       411,  410,  409,  408,  407,  406,  405,  404,  403,  402,
777       401,  399,  398,  397,  394,  393,  392,  391,  390,  389,
778       388,  385,  383,  382,  381,  380,  379,  378,  377,  374,
779       373,  372,  370,  369,  368,  367,  366,  362,  353,  352,
780
781       351,  350,  348,  347,  345,  344,  338,  337,  336,  335,
782       334,  333,  332,  331,  330,  327,  326,  325,  324,  323,
783       321,  320,  319,  318,  316,  314,  313,  312,  309,  308,
784       307,  306,  305,  304,  302,  301,  300,  298,  294,  293,
785       292,  291,  290,  289,  288,  287,  286,  285,  284,  282,
786       281,  280,  279,  278,  277,  276,  275,  274,  273,  272,
787       271,  270,  269,  268,  267,  266,  265,  263,  262,  259,
788       258,  257,  256,  249,  238,  237,  236,  235,  234,  233,
789       232,  231,  230,  229,  228,  227,  226,  225,  224,  223,
790       222,  220,  219,  218,  217,  213,  212,  211,  208,  207,
791
792       206,  205,  204,  192,  182,  181,  168,  145,  144,  143,
793       142,  140,  139,  135,  133,  132,  131,  130,  129,  128,
794       127,  126,  125,  124,  123,  122,  121,  118,  117,  116,
795       115,  114,  113,  112,  111,  110,  109,  108,  107,  106,
796       105,  104,  102,  101,  100,   98,   97,   96,   95,   94,
797        93,   92,   91,   90,   89,   88,   86,   85,   83,   82,
798        81,   80,   79,   78,   77,   76,   75,   74,   73,   72,
799        71,   70,   69,   64,   62,   59,   42,   41,   37,   32,
800        29,    3,  635,  635,  635,  635,  635,  635,  635,  635,
801       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
802
803       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
804       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
805       635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
806       635,  635,  635,  635,  635
807     } ;
808
809 static yy_state_type yy_last_accepting_state;
810 static char *yy_last_accepting_cpos;
811
812 /* The intent behind this definition is that it'll catch
813  * any uses of REJECT which flex missed.
814  */
815 #define REJECT reject_used_but_not_detected
816 #define yymore() yymore_used_but_not_detected
817 #define YY_MORE_ADJ 0
818 #define YY_RESTORE_YY_MORE_OFFSET
819 char *yytext;
820 #line 1 "dtimep.lex"
821 #define INITIAL 0
822 #line 2 "dtimep.lex"
823 #include <h/nmh.h>
824 #include <h/tws.h>
825
826   /* Since we're looking at a string at a time, don't worry about
827    *  wrapping to the next buffer.
828    */
829 #define yywrap() 1
830 #define YY_SKIP_YYWRAP
831
832 #define YY_NO_UNPUT
833
834   /* This is the tricky thing that makes this function cool.  We
835    *  replace the traditional int yylex(void) declaration with our
836    *  dparsetime() declaration, essentially piggy-backing off the
837    *  utility of the yylex() function and adding what we need to make
838    *  the parsing function useful to us.
839    */
840 #define YY_DECL struct tws *dparsetime(char *lexstr)
841
842   /* yyerminate() is called after the input string is matched to
843    * completion (actually, when the lexer reaches an EOF).  The only
844    * thing that really needs to be in this macro function is the
845    * return call, which must be substituted inline into dparsetime.
846    */
847
848 #define yyterminate() (void)yy_delete_buffer(lexhandle); \
849   if(!(tw.tw_flags & TW_SUCC)) { \
850     return (struct tws *)NULL; \
851   } \
852   if(tw.tw_year < 1960) \
853     tw.tw_year += 1900; \
854   if(tw.tw_year < 1960) \
855     tw.tw_year += 100; \
856   return(&tw)
857
858 /*
859  * Patchable flag that says how to interpret NN/NN/NN dates. When
860  * true, we do it European style: DD/MM/YY. When false, we do it
861  * American style: MM/DD/YY.  Of course, these are all non-RFC822
862  * compliant.
863  */
864 int europeandate = 0;
865
866 /*
867  * Table to convert month names to numeric month.  We use the
868  * fact that the low order 5 bits of the sum of the 2nd & 3rd
869  * characters of the name is a hash with no collisions for the 12
870  * valid month names.  (The mask to 5 bits maps any combination of
871  * upper and lower case into the same hash value).
872  */
873 static int month_map[] = {
874         0,
875         6,      /* 1 - Jul */
876         3,      /* 2 - Apr */
877         5,      /* 3 - Jun */
878         0,
879         10,     /* 5 - Nov */
880         0,
881         1,      /* 7 - Feb */
882         11,     /* 8 - Dec */
883         0,
884         0,
885         0,
886         0,
887         0,
888         0,
889         0,      /*15 - Jan */
890         0,
891         0,
892         0,
893         2,      /*19 - Mar */
894         0,
895         8,      /*21 - Sep */
896         0,
897         9,      /*23 - Oct */
898         0,
899         0,
900         4,      /*26 - May */
901         0,
902         7       /*28 - Aug */
903 };
904
905 /*
906  * Lookup table for day-of-week using the same hash trick as for above name-of-
907  * month table, but using the first and second character, not second and third.
908  *
909  * Compute index into table using: (day_name[0] & 7) + (day_name[1] & 4)
910  */
911 static int day_map[] = {
912         0,
913         0,
914         0,
915         6,      /* 3 - Sat */
916         4,      /* 4 - Thu */
917         0,
918         5,      /* 6 - Fri */
919         0,      /* 7 - Sun */
920         2,      /* 8 - Tue */
921         1       /* 9 - Mon */,
922         0,
923         3       /*11 - Wed */
924 };
925
926 /* The SET* macros will parse for the appropriate field, and leave the
927  * cp pointer at the first character after the desired field. Be
928  * careful with variable-length fields or alpha-num mixes.
929
930  * The SKIP* macros skip over characters of a particular class and
931  * leave cp at the position of the first character that doesn't match
932  * that class. Correspondingly, SKIPTO* skips until it reaches a
933  * character of a particular class.
934  */
935
936 #define INIT()       { cp = yytext;} 
937 #define SETWDAY()    { tw.tw_wday= day_map[(cp[0] & 7) + (cp[1] & 4)]; \
938                        tw.tw_flags &= ~TW_SDAY; tw.tw_flags |= TW_SEXP; \
939                        SKIPA(); }
940 #define SETMON()     { cp++; \
941                        tw.tw_mon = month_map[(cp[0] + cp[1]) & 0x1f]; \
942                        SKIPA(); }
943 #define SETMON_NUM() { tw.tw_mon = atoi(cp)-1; \
944                        SKIPD(); }
945 #define SETYEAR()    { tw.tw_year = atoi(cp); \
946                        SKIPD(); }
947 #define SETDAY()     { tw.tw_mday = atoi(cp); \
948                        tw.tw_flags |= TW_YES; \
949                        SKIPD(); }
950 #define SETTIME()    { tw.tw_hour = atoi(cp); \
951                        cp += 2; \
952                        SKIPTOD(); \
953                        tw.tw_min = atoi(cp); \
954                        cp += 2; \
955                        if(*cp == ':') { \
956                           tw.tw_sec = atoi(++cp); SKIPD(); } }
957 #define SETZONE(x)   { tw.tw_zone = ((x)/100)*60+(x)%100; \
958                        tw.tw_flags |= TW_SZEXP; \
959                        SKIPD(); }
960 #define SETDST()     { tw.tw_flags |= TW_DST; }
961 #define SKIPD()      { while ( isdigit(*cp++) ) ; \
962                        --cp; }
963 #define SKIPTOD()    { while ( !isdigit(*cp++) ) ; \
964                        --cp; }
965 #define SKIPA()      { while ( isalpha(*cp++) ) ; \
966                        --cp; }
967 #define SKIPTOA()    { while ( !isalpha(*cp++) ) ; \
968                        --cp; }
969 #define SKIPSP()     { while ( isspace(*cp++) ) ; \
970                        --cp; }
971 #define SKIPTOSP()   { while ( !isspace(*cp++) ) ; \
972                        --cp; }
973
974 #ifdef ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST
975 # ifdef TIME_WITH_SYS_TIME
976 #  include <sys/time.h>
977 #  include <time.h>
978 # else
979 #  ifdef HAVE_SYS_TIME_H
980 #   include <sys/time.h>
981 #  else
982 #   include <time.h>
983 #  endif
984 # endif
985
986 static void
987 zonehack (struct tws *tw)
988 {
989     register struct tm *tm;
990
991     if (dmktime (tw) == (time_t) -1)
992         return;
993
994     tm = localtime (&tw->tw_clock);
995     if (tm->tm_isdst) {
996         tw->tw_flags |= TW_DST;
997         tw->tw_zone -= 60;
998     }
999 }
1000 #endif  /* ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST */
1001 /* The year can either be 2 digits, or 4. However, after
1002 Y2K, we found that some MUA were reporting the year 100, hence
1003 the middle term here. yyterminate() resolves the actual
1004 issues with 2-digit years.
1005 */
1006
1007 /* Macros after this point can all be overridden by user definitions in
1008  * section 1.
1009  */
1010
1011 #ifndef YY_SKIP_YYWRAP
1012 #ifdef __cplusplus
1013 extern "C" int yywrap YY_PROTO(( void ));
1014 #else
1015 extern int yywrap YY_PROTO(( void ));
1016 #endif
1017 #endif
1018
1019 #ifndef YY_NO_UNPUT
1020 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1021 #endif
1022
1023 #ifndef yytext_ptr
1024 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1025 #endif
1026
1027 #ifdef YY_NEED_STRLEN
1028 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
1029 #endif
1030
1031 #ifndef YY_NO_INPUT
1032 #ifdef __cplusplus
1033 static int yyinput YY_PROTO(( void ));
1034 #else
1035 static int input YY_PROTO(( void ));
1036 #endif
1037 #endif
1038
1039 #if YY_STACK_USED
1040 static int yy_start_stack_ptr = 0;
1041 static int yy_start_stack_depth = 0;
1042 static int *yy_start_stack = 0;
1043 #ifndef YY_NO_PUSH_STATE
1044 static void yy_push_state YY_PROTO(( int new_state ));
1045 #endif
1046 #ifndef YY_NO_POP_STATE
1047 static void yy_pop_state YY_PROTO(( void ));
1048 #endif
1049 #ifndef YY_NO_TOP_STATE
1050 static int yy_top_state YY_PROTO(( void ));
1051 #endif
1052
1053 #else
1054 #define YY_NO_PUSH_STATE 1
1055 #define YY_NO_POP_STATE 1
1056 #define YY_NO_TOP_STATE 1
1057 #endif
1058
1059 #ifdef YY_MALLOC_DECL
1060 YY_MALLOC_DECL
1061 #else
1062 #if __STDC__
1063 #ifndef __cplusplus
1064 #include <stdlib.h>
1065 #endif
1066 #else
1067 /* Just try to get by without declaring the routines.  This will fail
1068  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1069  * or sizeof(void*) != sizeof(int).
1070  */
1071 #endif
1072 #endif
1073
1074 /* Amount of stuff to slurp up with each read. */
1075 #ifndef YY_READ_BUF_SIZE
1076 #define YY_READ_BUF_SIZE 8192
1077 #endif
1078
1079 /* Copy whatever the last rule matched to the standard output. */
1080
1081 #ifndef ECHO
1082 /* This used to be an fputs(), but since the string might contain NUL's,
1083  * we now use fwrite().
1084  */
1085 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1086 #endif
1087
1088 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1089  * is returned in "result".
1090  */
1091 #ifndef YY_INPUT
1092 #define YY_INPUT(buf,result,max_size) \
1093         if ( yy_current_buffer->yy_is_interactive ) \
1094                 { \
1095                 int c = '*', n; \
1096                 for ( n = 0; n < max_size && \
1097                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1098                         buf[n] = (char) c; \
1099                 if ( c == '\n' ) \
1100                         buf[n++] = (char) c; \
1101                 if ( c == EOF && ferror( yyin ) ) \
1102                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
1103                 result = n; \
1104                 } \
1105         else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
1106                   && ferror( yyin ) ) \
1107                 YY_FATAL_ERROR( "input in flex scanner failed" );
1108 #endif
1109
1110 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1111  * we don't want an extra ';' after the "return" because that will cause
1112  * some compilers to complain about unreachable statements.
1113  */
1114 #ifndef yyterminate
1115 #define yyterminate() return YY_NULL
1116 #endif
1117
1118 /* Number of entries by which start-condition stack grows. */
1119 #ifndef YY_START_STACK_INCR
1120 #define YY_START_STACK_INCR 25
1121 #endif
1122
1123 /* Report a fatal error. */
1124 #ifndef YY_FATAL_ERROR
1125 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1126 #endif
1127
1128 /* Default declaration of generated scanner - a define so the user can
1129  * easily add parameters.
1130  */
1131 #ifndef YY_DECL
1132 #define YY_DECL int yylex YY_PROTO(( void ))
1133 #endif
1134
1135 /* Code executed at the beginning of each rule, after yytext and yyleng
1136  * have been set up.
1137  */
1138 #ifndef YY_USER_ACTION
1139 #define YY_USER_ACTION
1140 #endif
1141
1142 /* Code executed at the end of each rule. */
1143 #ifndef YY_BREAK
1144 #define YY_BREAK break;
1145 #endif
1146
1147 #define YY_RULE_SETUP \
1148         YY_USER_ACTION
1149
1150 YY_DECL
1151         {
1152         register yy_state_type yy_current_state;
1153         register char *yy_cp = NULL, *yy_bp = NULL;
1154         register int yy_act;
1155
1156 #line 222 "dtimep.lex"
1157
1158
1159   /* This section begins the definition of dparsetime().
1160      Put here any local variable definitions and initializations */
1161   
1162   YY_BUFFER_STATE lexhandle;
1163
1164   register char *cp;
1165   static struct tws tw; 
1166
1167   memset(&tw,0,sizeof(struct tws));
1168
1169   lexhandle = yy_scan_string(lexstr);
1170
1171
1172
1173         if ( yy_init )
1174                 {
1175                 yy_init = 0;
1176
1177 #ifdef YY_USER_INIT
1178                 YY_USER_INIT;
1179 #endif
1180
1181                 if ( ! yy_start )
1182                         yy_start = 1;   /* first start state */
1183
1184                 if ( ! yyin )
1185                         yyin = stdin;
1186
1187                 if ( ! yyout )
1188                         yyout = stdout;
1189
1190                 if ( ! yy_current_buffer )
1191                         yy_current_buffer =
1192                                 yy_create_buffer( yyin, YY_BUF_SIZE );
1193
1194                 yy_load_buffer_state();
1195                 }
1196
1197         while ( 1 )             /* loops until end-of-file is reached */
1198                 {
1199                 yy_cp = yy_c_buf_p;
1200
1201                 /* Support of yytext. */
1202                 *yy_cp = yy_hold_char;
1203
1204                 /* yy_bp points to the position in yy_ch_buf of the start of
1205                  * the current run.
1206                  */
1207                 yy_bp = yy_cp;
1208
1209                 yy_current_state = yy_start;
1210 yy_match:
1211                 do
1212                         {
1213                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1214                         if ( yy_accept[yy_current_state] )
1215                                 {
1216                                 yy_last_accepting_state = yy_current_state;
1217                                 yy_last_accepting_cpos = yy_cp;
1218                                 }
1219                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1220                                 {
1221                                 yy_current_state = (int) yy_def[yy_current_state];
1222                                 if ( yy_current_state >= 636 )
1223                                         yy_c = yy_meta[(unsigned int) yy_c];
1224                                 }
1225                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1226                         ++yy_cp;
1227                         }
1228                 while ( yy_base[yy_current_state] != 1083 );
1229
1230 yy_find_action:
1231                 yy_act = yy_accept[yy_current_state];
1232                 if ( yy_act == 0 )
1233                         { /* have to back up */
1234                         yy_cp = yy_last_accepting_cpos;
1235                         yy_current_state = yy_last_accepting_state;
1236                         yy_act = yy_accept[yy_current_state];
1237                         }
1238
1239                 YY_DO_BEFORE_ACTION;
1240
1241
1242 do_action:      /* This label is used only to access EOF actions. */
1243
1244
1245                 switch ( yy_act )
1246         { /* beginning of action switch */
1247                         case 0: /* must back up */
1248                         /* undo the effects of YY_DO_BEFORE_ACTION */
1249                         *yy_cp = yy_hold_char;
1250                         yy_cp = yy_last_accepting_cpos;
1251                         yy_current_state = yy_last_accepting_state;
1252                         goto yy_find_action;
1253
1254 case 1:
1255 YY_RULE_SETUP
1256 #line 237 "dtimep.lex"
1257 {
1258                                      INIT();
1259                                      SETWDAY();
1260                                      SKIPTOA();
1261                                      SETMON();
1262                                      SKIPTOD();
1263                                      SETDAY();
1264                                      SKIPTOD();
1265                                      SETTIME();
1266                                      SKIPTOD();
1267                                      SETYEAR();
1268                                      }
1269         YY_BREAK
1270 case 2:
1271 YY_RULE_SETUP
1272 #line 250 "dtimep.lex"
1273 {
1274                                      INIT();
1275                                      SETWDAY();
1276                                      SKIPTOD();
1277                                      SETDAY();
1278                                      SKIPTOA();
1279                                      SETMON();
1280                                      SKIPTOD();
1281                                      SETYEAR();
1282                                      SKIPTOD();
1283                                      SETTIME();
1284                                      }
1285         YY_BREAK
1286 case 3:
1287 YY_RULE_SETUP
1288 #line 262 "dtimep.lex"
1289 {
1290                                      INIT();
1291                                      SETDAY();
1292                                      SKIPTOA();
1293                                      SETMON();
1294                                      SKIPTOD();
1295                                      SETYEAR();
1296                                      SKIPTOD();
1297                                      SETTIME();
1298                                      }
1299         YY_BREAK
1300 case 4:
1301 YY_RULE_SETUP
1302 #line 272 "dtimep.lex"
1303 {
1304                                      INIT();
1305                                      SETWDAY();
1306                                      SKIPTOA();
1307                                      SETMON();
1308                                      SKIPTOD();
1309                                      SETDAY();
1310                                      SKIPTOD();
1311                                      SETYEAR();
1312                                      SKIPTOD();
1313                                      SETTIME();
1314                                      }
1315         YY_BREAK
1316 case 5:
1317 YY_RULE_SETUP
1318 #line 284 "dtimep.lex"
1319 {
1320                                      INIT();
1321                                      SETWDAY();
1322                                      SKIPTOA();
1323                                      SETMON();
1324                                      SKIPTOD();
1325                                      SETDAY();
1326                                      SKIPTOD();
1327                                      SETYEAR();
1328                                      }
1329         YY_BREAK
1330 case 6:
1331 YY_RULE_SETUP
1332 #line 294 "dtimep.lex"
1333 {
1334                                      INIT();
1335                                      SETMON();
1336                                      SKIPTOD();
1337                                      SETDAY();
1338                                      SKIPTOD();
1339                                      SETYEAR();
1340                                      SKIPTOA();
1341                                      SETWDAY();
1342                                      }
1343         YY_BREAK
1344 case 7:
1345 YY_RULE_SETUP
1346 #line 304 "dtimep.lex"
1347 {
1348                                      INIT();
1349                                      SETMON();
1350                                      SKIPTOD();
1351                                      SETDAY();
1352                                      SKIPTOD();
1353                                      SETYEAR();
1354                                      }
1355         YY_BREAK
1356 case 8:
1357 YY_RULE_SETUP
1358 #line 312 "dtimep.lex"
1359 {
1360                                      INIT();
1361                                      if(europeandate) {
1362                                        /* DD/MM/YY */
1363                                      SETDAY();
1364                                      SKIPTOD();
1365                                      SETMON_NUM();
1366                                      } else {
1367                                        /* MM/DD/YY */
1368                                      SETMON_NUM();
1369                                      SKIPTOD();
1370                                      SETDAY();
1371                                      }
1372                                      SKIPTOD();
1373                                      SETYEAR();
1374                                      SKIPTOD();
1375                                      SETTIME();
1376                                      }
1377         YY_BREAK
1378 case 9:
1379 YY_RULE_SETUP
1380 #line 330 "dtimep.lex"
1381 {
1382                                      INIT();
1383                                      if(europeandate) {
1384                                        /* DD/MM/YY */
1385                                      SETDAY();
1386                                      SKIPTOD();
1387                                      SETMON_NUM();
1388                                      } else {
1389                                        /* MM/DD/YY */
1390                                      SETMON_NUM();
1391                                      SKIPTOD();
1392                                      SETDAY();
1393                                      }
1394                                      SKIPTOD();
1395                                      SETYEAR();
1396                                      }
1397         YY_BREAK
1398 case 10:
1399 YY_RULE_SETUP
1400 #line 347 "dtimep.lex"
1401
1402         YY_BREAK
1403 case 11:
1404 YY_RULE_SETUP
1405 #line 348 "dtimep.lex"
1406 tw.tw_hour += 12;
1407         YY_BREAK
1408 case 12:
1409 YY_RULE_SETUP
1410 #line 350 "dtimep.lex"
1411 {
1412                                     INIT();
1413                                     SKIPTOD();
1414                                     SETZONE(atoi(cp));
1415 #ifdef  ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST
1416                                     zonehack (&tw);
1417 #endif  /* ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST */
1418                                     //                              yyterminate();
1419                                     }
1420         YY_BREAK
1421 case 13:
1422 YY_RULE_SETUP
1423 #line 359 "dtimep.lex"
1424 {
1425                                     INIT();
1426                                     SKIPTOD();
1427                                     SETZONE(-atoi(cp));
1428 #ifdef  ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST
1429                                     zonehack (&tw);
1430 #endif  /* ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST */
1431                                     //                              yyterminate();
1432                                     
1433                                     }
1434         YY_BREAK
1435 case 14:
1436 YY_RULE_SETUP
1437 #line 369 "dtimep.lex"
1438 INIT(); SETZONE(0);
1439         YY_BREAK
1440 case 15:
1441 YY_RULE_SETUP
1442 #line 370 "dtimep.lex"
1443 INIT(); SETZONE(0);
1444         YY_BREAK
1445 case 16:
1446 YY_RULE_SETUP
1447 #line 371 "dtimep.lex"
1448 INIT(); SETZONE(-500);
1449         YY_BREAK
1450 case 17:
1451 YY_RULE_SETUP
1452 #line 372 "dtimep.lex"
1453 INIT(); SETDST(); SETZONE(-500);
1454         YY_BREAK
1455 case 18:
1456 YY_RULE_SETUP
1457 #line 373 "dtimep.lex"
1458 INIT(); SETZONE(-600);
1459         YY_BREAK
1460 case 19:
1461 YY_RULE_SETUP
1462 #line 374 "dtimep.lex"
1463 INIT(); SETDST(); SETZONE(-600);
1464         YY_BREAK
1465 case 20:
1466 YY_RULE_SETUP
1467 #line 375 "dtimep.lex"
1468 INIT(); SETZONE(-700);
1469         YY_BREAK
1470 case 21:
1471 YY_RULE_SETUP
1472 #line 376 "dtimep.lex"
1473 INIT(); SETDST(); SETZONE(-700);
1474         YY_BREAK
1475 case 22:
1476 YY_RULE_SETUP
1477 #line 377 "dtimep.lex"
1478 INIT(); SETZONE(-800);
1479         YY_BREAK
1480 case 23:
1481 YY_RULE_SETUP
1482 #line 378 "dtimep.lex"
1483 INIT(); SETDST(); SETZONE(-800);
1484         YY_BREAK
1485 case 24:
1486 YY_RULE_SETUP
1487 #line 379 "dtimep.lex"
1488 INIT(); SETZONE(-330);
1489         YY_BREAK
1490 case 25:
1491 YY_RULE_SETUP
1492 #line 380 "dtimep.lex"
1493 INIT(); SETZONE(-400);
1494         YY_BREAK
1495 case 26:
1496 YY_RULE_SETUP
1497 #line 381 "dtimep.lex"
1498 INIT(); SETDST(); SETZONE(-400);
1499         YY_BREAK
1500 case 27:
1501 YY_RULE_SETUP
1502 #line 382 "dtimep.lex"
1503 INIT(); SETZONE(-1000);
1504         YY_BREAK
1505 case 28:
1506 YY_RULE_SETUP
1507 #line 383 "dtimep.lex"
1508 INIT(); SETDST(); SETZONE(-1000);
1509         YY_BREAK
1510 case 29:
1511 YY_RULE_SETUP
1512 #line 384 "dtimep.lex"
1513 ;
1514         YY_BREAK
1515 case 30:
1516 YY_RULE_SETUP
1517 #line 385 "dtimep.lex"
1518
1519         YY_BREAK
1520 case 31:
1521 YY_RULE_SETUP
1522 #line 386 "dtimep.lex"
1523 ECHO;
1524         YY_BREAK
1525 case YY_STATE_EOF(INITIAL):
1526         yyterminate();
1527
1528         case YY_END_OF_BUFFER:
1529                 {
1530                 /* Amount of text matched not including the EOB char. */
1531                 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
1532
1533                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1534                 *yy_cp = yy_hold_char;
1535                 YY_RESTORE_YY_MORE_OFFSET
1536
1537                 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
1538                         {
1539                         /* We're scanning a new file or input source.  It's
1540                          * possible that this happened because the user
1541                          * just pointed yyin at a new source and called
1542                          * yylex().  If so, then we have to assure
1543                          * consistency between yy_current_buffer and our
1544                          * globals.  Here is the right place to do so, because
1545                          * this is the first action (other than possibly a
1546                          * back-up) that will match for the new input source.
1547                          */
1548                         yy_n_chars = yy_current_buffer->yy_n_chars;
1549                         yy_current_buffer->yy_input_file = yyin;
1550                         yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
1551                         }
1552
1553                 /* Note that here we test for yy_c_buf_p "<=" to the position
1554                  * of the first EOB in the buffer, since yy_c_buf_p will
1555                  * already have been incremented past the NUL character
1556                  * (since all states make transitions on EOB to the
1557                  * end-of-buffer state).  Contrast this with the test
1558                  * in input().
1559                  */
1560                 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1561                         { /* This was really a NUL. */
1562                         yy_state_type yy_next_state;
1563
1564                         yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
1565
1566                         yy_current_state = yy_get_previous_state();
1567
1568                         /* Okay, we're now positioned to make the NUL
1569                          * transition.  We couldn't have
1570                          * yy_get_previous_state() go ahead and do it
1571                          * for us because it doesn't know how to deal
1572                          * with the possibility of jamming (and we don't
1573                          * want to build jamming into it because then it
1574                          * will run more slowly).
1575                          */
1576
1577                         yy_next_state = yy_try_NUL_trans( yy_current_state );
1578
1579                         yy_bp = yytext_ptr + YY_MORE_ADJ;
1580
1581                         if ( yy_next_state )
1582                                 {
1583                                 /* Consume the NUL. */
1584                                 yy_cp = ++yy_c_buf_p;
1585                                 yy_current_state = yy_next_state;
1586                                 goto yy_match;
1587                                 }
1588
1589                         else
1590                                 {
1591                                 yy_cp = yy_c_buf_p;
1592                                 goto yy_find_action;
1593                                 }
1594                         }
1595
1596                 else switch ( yy_get_next_buffer() )
1597                         {
1598                         case EOB_ACT_END_OF_FILE:
1599                                 {
1600                                 yy_did_buffer_switch_on_eof = 0;
1601
1602                                 if ( yywrap() )
1603                                         {
1604                                         /* Note: because we've taken care in
1605                                          * yy_get_next_buffer() to have set up
1606                                          * yytext, we can now set up
1607                                          * yy_c_buf_p so that if some total
1608                                          * hoser (like flex itself) wants to
1609                                          * call the scanner after we return the
1610                                          * YY_NULL, it'll still work - another
1611                                          * YY_NULL will get returned.
1612                                          */
1613                                         yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
1614
1615                                         yy_act = YY_STATE_EOF(YY_START);
1616                                         goto do_action;
1617                                         }
1618
1619                                 else
1620                                         {
1621                                         if ( ! yy_did_buffer_switch_on_eof )
1622                                                 YY_NEW_FILE;
1623                                         }
1624                                 break;
1625                                 }
1626
1627                         case EOB_ACT_CONTINUE_SCAN:
1628                                 yy_c_buf_p =
1629                                         yytext_ptr + yy_amount_of_matched_text;
1630
1631                                 yy_current_state = yy_get_previous_state();
1632
1633                                 yy_cp = yy_c_buf_p;
1634                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
1635                                 goto yy_match;
1636
1637                         case EOB_ACT_LAST_MATCH:
1638                                 yy_c_buf_p =
1639                                 &yy_current_buffer->yy_ch_buf[yy_n_chars];
1640
1641                                 yy_current_state = yy_get_previous_state();
1642
1643                                 yy_cp = yy_c_buf_p;
1644                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
1645                                 goto yy_find_action;
1646                         }
1647                 break;
1648                 }
1649
1650         default:
1651                 YY_FATAL_ERROR(
1652                         "fatal flex scanner internal error--no action found" );
1653         } /* end of action switch */
1654                 } /* end of scanning one token */
1655         } /* end of yylex */
1656
1657
1658 /* yy_get_next_buffer - try to read in a new buffer
1659  *
1660  * Returns a code representing an action:
1661  *      EOB_ACT_LAST_MATCH -
1662  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1663  *      EOB_ACT_END_OF_FILE - end of file
1664  */
1665
1666 static int yy_get_next_buffer()
1667         {
1668         register char *dest = yy_current_buffer->yy_ch_buf;
1669         register char *source = yytext_ptr;
1670         register int number_to_move, i;
1671         int ret_val;
1672
1673         if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
1674                 YY_FATAL_ERROR(
1675                 "fatal flex scanner internal error--end of buffer missed" );
1676
1677         if ( yy_current_buffer->yy_fill_buffer == 0 )
1678                 { /* Don't try to fill the buffer, so this is an EOF. */
1679                 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
1680                         {
1681                         /* We matched a single character, the EOB, so
1682                          * treat this as a final EOF.
1683                          */
1684                         return EOB_ACT_END_OF_FILE;
1685                         }
1686
1687                 else
1688                         {
1689                         /* We matched some text prior to the EOB, first
1690                          * process it.
1691                          */
1692                         return EOB_ACT_LAST_MATCH;
1693                         }
1694                 }
1695
1696         /* Try to read more data. */
1697
1698         /* First move last chars to start of buffer. */
1699         number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
1700
1701         for ( i = 0; i < number_to_move; ++i )
1702                 *(dest++) = *(source++);
1703
1704         if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1705                 /* don't do the read, it's not guaranteed to return an EOF,
1706                  * just force an EOF
1707                  */
1708                 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
1709
1710         else
1711                 {
1712                 int num_to_read =
1713                         yy_current_buffer->yy_buf_size - number_to_move - 1;
1714
1715                 while ( num_to_read <= 0 )
1716                         { /* Not enough room in the buffer - grow it. */
1717 #ifdef YY_USES_REJECT
1718                         YY_FATAL_ERROR(
1719 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
1720 #else
1721
1722                         /* just a shorter name for the current buffer */
1723                         YY_BUFFER_STATE b = yy_current_buffer;
1724
1725                         int yy_c_buf_p_offset =
1726                                 (int) (yy_c_buf_p - b->yy_ch_buf);
1727
1728                         if ( b->yy_is_our_buffer )
1729                                 {
1730                                 int new_size = b->yy_buf_size * 2;
1731
1732                                 if ( new_size <= 0 )
1733                                         b->yy_buf_size += b->yy_buf_size / 8;
1734                                 else
1735                                         b->yy_buf_size *= 2;
1736
1737                                 b->yy_ch_buf = (char *)
1738                                         /* Include room in for 2 EOB chars. */
1739                                         yy_flex_realloc( (void *) b->yy_ch_buf,
1740                                                          b->yy_buf_size + 2 );
1741                                 }
1742                         else
1743                                 /* Can't grow it, we don't own it. */
1744                                 b->yy_ch_buf = 0;
1745
1746                         if ( ! b->yy_ch_buf )
1747                                 YY_FATAL_ERROR(
1748                                 "fatal error - scanner input buffer overflow" );
1749
1750                         yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1751
1752                         num_to_read = yy_current_buffer->yy_buf_size -
1753                                                 number_to_move - 1;
1754 #endif
1755                         }
1756
1757                 if ( num_to_read > YY_READ_BUF_SIZE )
1758                         num_to_read = YY_READ_BUF_SIZE;
1759
1760                 /* Read in more data. */
1761                 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
1762                         yy_n_chars, num_to_read );
1763
1764                 yy_current_buffer->yy_n_chars = yy_n_chars;
1765                 }
1766
1767         if ( yy_n_chars == 0 )
1768                 {
1769                 if ( number_to_move == YY_MORE_ADJ )
1770                         {
1771                         ret_val = EOB_ACT_END_OF_FILE;
1772                         yyrestart( yyin );
1773                         }
1774
1775                 else
1776                         {
1777                         ret_val = EOB_ACT_LAST_MATCH;
1778                         yy_current_buffer->yy_buffer_status =
1779                                 YY_BUFFER_EOF_PENDING;
1780                         }
1781                 }
1782
1783         else
1784                 ret_val = EOB_ACT_CONTINUE_SCAN;
1785
1786         yy_n_chars += number_to_move;
1787         yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1788         yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1789
1790         yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
1791
1792         return ret_val;
1793         }
1794
1795
1796 /* yy_get_previous_state - get the state just before the EOB char was reached */
1797
1798 static yy_state_type yy_get_previous_state()
1799         {
1800         register yy_state_type yy_current_state;
1801         register char *yy_cp;
1802
1803         yy_current_state = yy_start;
1804
1805         for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
1806                 {
1807                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1808                 if ( yy_accept[yy_current_state] )
1809                         {
1810                         yy_last_accepting_state = yy_current_state;
1811                         yy_last_accepting_cpos = yy_cp;
1812                         }
1813                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1814                         {
1815                         yy_current_state = (int) yy_def[yy_current_state];
1816                         if ( yy_current_state >= 636 )
1817                                 yy_c = yy_meta[(unsigned int) yy_c];
1818                         }
1819                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1820                 }
1821
1822         return yy_current_state;
1823         }
1824
1825
1826 /* yy_try_NUL_trans - try to make a transition on the NUL character
1827  *
1828  * synopsis
1829  *      next_state = yy_try_NUL_trans( current_state );
1830  */
1831
1832 #ifdef YY_USE_PROTOS
1833 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
1834 #else
1835 static yy_state_type yy_try_NUL_trans( yy_current_state )
1836 yy_state_type yy_current_state;
1837 #endif
1838         {
1839         register int yy_is_jam;
1840         register char *yy_cp = yy_c_buf_p;
1841
1842         register YY_CHAR yy_c = 1;
1843         if ( yy_accept[yy_current_state] )
1844                 {
1845                 yy_last_accepting_state = yy_current_state;
1846                 yy_last_accepting_cpos = yy_cp;
1847                 }
1848         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1849                 {
1850                 yy_current_state = (int) yy_def[yy_current_state];
1851                 if ( yy_current_state >= 636 )
1852                         yy_c = yy_meta[(unsigned int) yy_c];
1853                 }
1854         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1855         yy_is_jam = (yy_current_state == 635);
1856
1857         return yy_is_jam ? 0 : yy_current_state;
1858         }
1859
1860
1861 #ifndef YY_NO_UNPUT
1862 #ifdef YY_USE_PROTOS
1863 static void yyunput( int c, register char *yy_bp )
1864 #else
1865 static void yyunput( c, yy_bp )
1866 int c;
1867 register char *yy_bp;
1868 #endif
1869         {
1870         register char *yy_cp = yy_c_buf_p;
1871
1872         /* undo effects of setting up yytext */
1873         *yy_cp = yy_hold_char;
1874
1875         if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1876                 { /* need to shift things up to make room */
1877                 /* +2 for EOB chars. */
1878                 register int number_to_move = yy_n_chars + 2;
1879                 register char *dest = &yy_current_buffer->yy_ch_buf[
1880                                         yy_current_buffer->yy_buf_size + 2];
1881                 register char *source =
1882                                 &yy_current_buffer->yy_ch_buf[number_to_move];
1883
1884                 while ( source > yy_current_buffer->yy_ch_buf )
1885                         *--dest = *--source;
1886
1887                 yy_cp += (int) (dest - source);
1888                 yy_bp += (int) (dest - source);
1889                 yy_current_buffer->yy_n_chars =
1890                         yy_n_chars = yy_current_buffer->yy_buf_size;
1891
1892                 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1893                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
1894                 }
1895
1896         *--yy_cp = (char) c;
1897
1898
1899         yytext_ptr = yy_bp;
1900         yy_hold_char = *yy_cp;
1901         yy_c_buf_p = yy_cp;
1902         }
1903 #endif  /* ifndef YY_NO_UNPUT */
1904
1905
1906 #ifdef __cplusplus
1907 static int yyinput()
1908 #else
1909 static int input()
1910 #endif
1911         {
1912         int c;
1913
1914         *yy_c_buf_p = yy_hold_char;
1915
1916         if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
1917                 {
1918                 /* yy_c_buf_p now points to the character we want to return.
1919                  * If this occurs *before* the EOB characters, then it's a
1920                  * valid NUL; if not, then we've hit the end of the buffer.
1921                  */
1922                 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1923                         /* This was really a NUL. */
1924                         *yy_c_buf_p = '\0';
1925
1926                 else
1927                         { /* need more input */
1928                         int offset = yy_c_buf_p - yytext_ptr;
1929                         ++yy_c_buf_p;
1930
1931                         switch ( yy_get_next_buffer() )
1932                                 {
1933                                 case EOB_ACT_LAST_MATCH:
1934                                         /* This happens because yy_g_n_b()
1935                                          * sees that we've accumulated a
1936                                          * token and flags that we need to
1937                                          * try matching the token before
1938                                          * proceeding.  But for input(),
1939                                          * there's no matching to consider.
1940                                          * So convert the EOB_ACT_LAST_MATCH
1941                                          * to EOB_ACT_END_OF_FILE.
1942                                          */
1943
1944                                         /* Reset buffer status. */
1945                                         yyrestart( yyin );
1946
1947                                         /* fall through */
1948
1949                                 case EOB_ACT_END_OF_FILE:
1950                                         {
1951                                         if ( yywrap() )
1952                                                 return EOF;
1953
1954                                         if ( ! yy_did_buffer_switch_on_eof )
1955                                                 YY_NEW_FILE;
1956 #ifdef __cplusplus
1957                                         return yyinput();
1958 #else
1959                                         return input();
1960 #endif
1961                                         }
1962
1963                                 case EOB_ACT_CONTINUE_SCAN:
1964                                         yy_c_buf_p = yytext_ptr + offset;
1965                                         break;
1966                                 }
1967                         }
1968                 }
1969
1970         c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
1971         *yy_c_buf_p = '\0';     /* preserve yytext */
1972         yy_hold_char = *++yy_c_buf_p;
1973
1974
1975         return c;
1976         }
1977
1978
1979 #ifdef YY_USE_PROTOS
1980 void yyrestart( FILE *input_file )
1981 #else
1982 void yyrestart( input_file )
1983 FILE *input_file;
1984 #endif
1985         {
1986         if ( ! yy_current_buffer )
1987                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
1988
1989         yy_init_buffer( yy_current_buffer, input_file );
1990         yy_load_buffer_state();
1991         }
1992
1993
1994 #ifdef YY_USE_PROTOS
1995 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
1996 #else
1997 void yy_switch_to_buffer( new_buffer )
1998 YY_BUFFER_STATE new_buffer;
1999 #endif
2000         {
2001         if ( yy_current_buffer == new_buffer )
2002                 return;
2003
2004         if ( yy_current_buffer )
2005                 {
2006                 /* Flush out information for old buffer. */
2007                 *yy_c_buf_p = yy_hold_char;
2008                 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
2009                 yy_current_buffer->yy_n_chars = yy_n_chars;
2010                 }
2011
2012         yy_current_buffer = new_buffer;
2013         yy_load_buffer_state();
2014
2015         /* We don't actually know whether we did this switch during
2016          * EOF (yywrap()) processing, but the only time this flag
2017          * is looked at is after yywrap() is called, so it's safe
2018          * to go ahead and always set it.
2019          */
2020         yy_did_buffer_switch_on_eof = 1;
2021         }
2022
2023
2024 #ifdef YY_USE_PROTOS
2025 void yy_load_buffer_state( void )
2026 #else
2027 void yy_load_buffer_state()
2028 #endif
2029         {
2030         yy_n_chars = yy_current_buffer->yy_n_chars;
2031         yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
2032         yyin = yy_current_buffer->yy_input_file;
2033         yy_hold_char = *yy_c_buf_p;
2034         }
2035
2036
2037 #ifdef YY_USE_PROTOS
2038 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
2039 #else
2040 YY_BUFFER_STATE yy_create_buffer( file, size )
2041 FILE *file;
2042 int size;
2043 #endif
2044         {
2045         YY_BUFFER_STATE b;
2046
2047         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2048         if ( ! b )
2049                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2050
2051         b->yy_buf_size = size;
2052
2053         /* yy_ch_buf has to be 2 characters longer than the size given because
2054          * we need to put in 2 end-of-buffer characters.
2055          */
2056         b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
2057         if ( ! b->yy_ch_buf )
2058                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2059
2060         b->yy_is_our_buffer = 1;
2061
2062         yy_init_buffer( b, file );
2063
2064         return b;
2065         }
2066
2067
2068 #ifdef YY_USE_PROTOS
2069 void yy_delete_buffer( YY_BUFFER_STATE b )
2070 #else
2071 void yy_delete_buffer( b )
2072 YY_BUFFER_STATE b;
2073 #endif
2074         {
2075         if ( ! b )
2076                 return;
2077
2078         if ( b == yy_current_buffer )
2079                 yy_current_buffer = (YY_BUFFER_STATE) 0;
2080
2081         if ( b->yy_is_our_buffer )
2082                 yy_flex_free( (void *) b->yy_ch_buf );
2083
2084         yy_flex_free( (void *) b );
2085         }
2086
2087
2088 #ifndef YY_ALWAYS_INTERACTIVE
2089 #ifndef YY_NEVER_INTERACTIVE
2090 extern int isatty YY_PROTO(( int ));
2091 #endif
2092 #endif
2093
2094 #ifdef YY_USE_PROTOS
2095 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
2096 #else
2097 void yy_init_buffer( b, file )
2098 YY_BUFFER_STATE b;
2099 FILE *file;
2100 #endif
2101
2102
2103         {
2104         yy_flush_buffer( b );
2105
2106         b->yy_input_file = file;
2107         b->yy_fill_buffer = 1;
2108
2109 #if YY_ALWAYS_INTERACTIVE
2110         b->yy_is_interactive = 1;
2111 #else
2112 #if YY_NEVER_INTERACTIVE
2113         b->yy_is_interactive = 0;
2114 #else
2115         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2116 #endif
2117 #endif
2118         }
2119
2120
2121 #ifdef YY_USE_PROTOS
2122 void yy_flush_buffer( YY_BUFFER_STATE b )
2123 #else
2124 void yy_flush_buffer( b )
2125 YY_BUFFER_STATE b;
2126 #endif
2127
2128         {
2129         if ( ! b )
2130                 return;
2131
2132         b->yy_n_chars = 0;
2133
2134         /* We always need two end-of-buffer characters.  The first causes
2135          * a transition to the end-of-buffer state.  The second causes
2136          * a jam in that state.
2137          */
2138         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2139         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2140
2141         b->yy_buf_pos = &b->yy_ch_buf[0];
2142
2143         b->yy_at_bol = 1;
2144         b->yy_buffer_status = YY_BUFFER_NEW;
2145
2146         if ( b == yy_current_buffer )
2147                 yy_load_buffer_state();
2148         }
2149
2150
2151 #ifndef YY_NO_SCAN_BUFFER
2152 #ifdef YY_USE_PROTOS
2153 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
2154 #else
2155 YY_BUFFER_STATE yy_scan_buffer( base, size )
2156 char *base;
2157 yy_size_t size;
2158 #endif
2159         {
2160         YY_BUFFER_STATE b;
2161
2162         if ( size < 2 ||
2163              base[size-2] != YY_END_OF_BUFFER_CHAR ||
2164              base[size-1] != YY_END_OF_BUFFER_CHAR )
2165                 /* They forgot to leave room for the EOB's. */
2166                 return 0;
2167
2168         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2169         if ( ! b )
2170                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2171
2172         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
2173         b->yy_buf_pos = b->yy_ch_buf = base;
2174         b->yy_is_our_buffer = 0;
2175         b->yy_input_file = 0;
2176         b->yy_n_chars = b->yy_buf_size;
2177         b->yy_is_interactive = 0;
2178         b->yy_at_bol = 1;
2179         b->yy_fill_buffer = 0;
2180         b->yy_buffer_status = YY_BUFFER_NEW;
2181
2182         yy_switch_to_buffer( b );
2183
2184         return b;
2185         }
2186 #endif
2187
2188
2189 #ifndef YY_NO_SCAN_STRING
2190 #ifdef YY_USE_PROTOS
2191 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
2192 #else
2193 YY_BUFFER_STATE yy_scan_string( yy_str )
2194 yyconst char *yy_str;
2195 #endif
2196         {
2197         int len;
2198         for ( len = 0; yy_str[len]; ++len )
2199                 ;
2200
2201         return yy_scan_bytes( yy_str, len );
2202         }
2203 #endif
2204
2205
2206 #ifndef YY_NO_SCAN_BYTES
2207 #ifdef YY_USE_PROTOS
2208 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
2209 #else
2210 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
2211 yyconst char *bytes;
2212 int len;
2213 #endif
2214         {
2215         YY_BUFFER_STATE b;
2216         char *buf;
2217         yy_size_t n;
2218         int i;
2219
2220         /* Get memory for full buffer, including space for trailing EOB's. */
2221         n = len + 2;
2222         buf = (char *) yy_flex_alloc( n );
2223         if ( ! buf )
2224                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2225
2226         for ( i = 0; i < len; ++i )
2227                 buf[i] = bytes[i];
2228
2229         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
2230
2231         b = yy_scan_buffer( buf, n );
2232         if ( ! b )
2233                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2234
2235         /* It's okay to grow etc. this buffer, and we should throw it
2236          * away when we're done.
2237          */
2238         b->yy_is_our_buffer = 1;
2239
2240         return b;
2241         }
2242 #endif
2243
2244
2245 #ifndef YY_NO_PUSH_STATE
2246 #ifdef YY_USE_PROTOS
2247 static void yy_push_state( int new_state )
2248 #else
2249 static void yy_push_state( new_state )
2250 int new_state;
2251 #endif
2252         {
2253         if ( yy_start_stack_ptr >= yy_start_stack_depth )
2254                 {
2255                 yy_size_t new_size;
2256
2257                 yy_start_stack_depth += YY_START_STACK_INCR;
2258                 new_size = yy_start_stack_depth * sizeof( int );
2259
2260                 if ( ! yy_start_stack )
2261                         yy_start_stack = (int *) yy_flex_alloc( new_size );
2262
2263                 else
2264                         yy_start_stack = (int *) yy_flex_realloc(
2265                                         (void *) yy_start_stack, new_size );
2266
2267                 if ( ! yy_start_stack )
2268                         YY_FATAL_ERROR(
2269                         "out of memory expanding start-condition stack" );
2270                 }
2271
2272         yy_start_stack[yy_start_stack_ptr++] = YY_START;
2273
2274         BEGIN(new_state);
2275         }
2276 #endif
2277
2278
2279 #ifndef YY_NO_POP_STATE
2280 static void yy_pop_state()
2281         {
2282         if ( --yy_start_stack_ptr < 0 )
2283                 YY_FATAL_ERROR( "start-condition stack underflow" );
2284
2285         BEGIN(yy_start_stack[yy_start_stack_ptr]);
2286         }
2287 #endif
2288
2289
2290 #ifndef YY_NO_TOP_STATE
2291 static int yy_top_state()
2292         {
2293         return yy_start_stack[yy_start_stack_ptr - 1];
2294         }
2295 #endif
2296
2297 #ifndef YY_EXIT_FAILURE
2298 #define YY_EXIT_FAILURE 2
2299 #endif
2300
2301 #ifdef YY_USE_PROTOS
2302 static void yy_fatal_error( yyconst char msg[] )
2303 #else
2304 static void yy_fatal_error( msg )
2305 char msg[];
2306 #endif
2307         {
2308         (void) fprintf( stderr, "%s\n", msg );
2309         exit( YY_EXIT_FAILURE );
2310         }
2311
2312
2313
2314 /* Redefine yyless() so it works in section 3 code. */
2315
2316 #undef yyless
2317 #define yyless(n) \
2318         do \
2319                 { \
2320                 /* Undo effects of setting up yytext. */ \
2321                 yytext[yyleng] = yy_hold_char; \
2322                 yy_c_buf_p = yytext + n; \
2323                 yy_hold_char = *yy_c_buf_p; \
2324                 *yy_c_buf_p = '\0'; \
2325                 yyleng = n; \
2326                 } \
2327         while ( 0 )
2328
2329
2330 /* Internal utility routines. */
2331
2332 #ifndef yytext_ptr
2333 #ifdef YY_USE_PROTOS
2334 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
2335 #else
2336 static void yy_flex_strncpy( s1, s2, n )
2337 char *s1;
2338 yyconst char *s2;
2339 int n;
2340 #endif
2341         {
2342         register int i;
2343         for ( i = 0; i < n; ++i )
2344                 s1[i] = s2[i];
2345         }
2346 #endif
2347
2348 #ifdef YY_NEED_STRLEN
2349 #ifdef YY_USE_PROTOS
2350 static int yy_flex_strlen( yyconst char *s )
2351 #else
2352 static int yy_flex_strlen( s )
2353 yyconst char *s;
2354 #endif
2355         {
2356         register int n;
2357         for ( n = 0; s[n]; ++n )
2358                 ;
2359
2360         return n;
2361         }
2362 #endif
2363
2364
2365 #ifdef YY_USE_PROTOS
2366 static void *yy_flex_alloc( yy_size_t size )
2367 #else
2368 static void *yy_flex_alloc( size )
2369 yy_size_t size;
2370 #endif
2371         {
2372         return (void *) malloc( size );
2373         }
2374
2375 #ifdef YY_USE_PROTOS
2376 static void *yy_flex_realloc( void *ptr, yy_size_t size )
2377 #else
2378 static void *yy_flex_realloc( ptr, size )
2379 void *ptr;
2380 yy_size_t size;
2381 #endif
2382         {
2383         /* The cast to (char *) in the following accommodates both
2384          * implementations that use char* generic pointers, and those
2385          * that use void* generic pointers.  It works with the latter
2386          * because both ANSI C and C++ allow castless assignment from
2387          * any pointer type to void*, and deal with argument conversions
2388          * as though doing an assignment.
2389          */
2390         return (void *) realloc( (char *) ptr, size );
2391         }
2392
2393 #ifdef YY_USE_PROTOS
2394 static void yy_flex_free( void *ptr )
2395 #else
2396 static void yy_flex_free( ptr )
2397 void *ptr;
2398 #endif
2399         {
2400         free( ptr );
2401         }
2402
2403 #if YY_MAIN
2404 int main()
2405         {
2406         yylex();
2407         return 0;
2408         }
2409 #endif
2410 #line 386 "dtimep.lex"