1/* Generated by re2c 0.13.5 on Tue May 13 16:52:44 2014 */
2#line 1 "ext/date/lib/parse_date.re"
3/*
4   +----------------------------------------------------------------------+
5   | PHP Version 5                                                        |
6   +----------------------------------------------------------------------+
7   | Copyright (c) 1997-2014 The PHP Group                                |
8   +----------------------------------------------------------------------+
9   | This source file is subject to version 3.01 of the PHP license,      |
10   | that is bundled with this package in the file LICENSE, and is        |
11   | available through the world-wide-web at the following url:           |
12   | http://www.php.net/license/3_01.txt                                  |
13   | If you did not receive a copy of the PHP license and are unable to   |
14   | obtain it through the world-wide-web, please send a note to          |
15   | license@php.net so we can mail you a copy immediately.               |
16   +----------------------------------------------------------------------+
17   | Authors: Derick Rethans <derick@derickrethans.nl>                    |
18   +----------------------------------------------------------------------+
19 */
20
21/* $Id$ */
22
23#include "timelib.h"
24
25#include <stdio.h>
26#include <ctype.h>
27#include <math.h>
28#include <assert.h>
29
30#ifdef HAVE_STDLIB_H
31#include <stdlib.h>
32#endif
33#ifdef HAVE_STRING_H
34#include <string.h>
35#else
36#include <strings.h>
37#endif
38
39#if defined(_MSC_VER)
40# define strtoll(s, f, b) _atoi64(s)
41#elif !defined(HAVE_STRTOLL)
42# if defined(HAVE_ATOLL)
43#  define strtoll(s, f, b) atoll(s)
44# else
45#  define strtoll(s, f, b) strtol(s, f, b)
46# endif
47#endif
48
49#define TIMELIB_UNSET   -99999
50
51#define TIMELIB_SECOND  1
52#define TIMELIB_MINUTE  2
53#define TIMELIB_HOUR    3
54#define TIMELIB_DAY     4
55#define TIMELIB_MONTH   5
56#define TIMELIB_YEAR    6
57#define TIMELIB_WEEKDAY 7
58#define TIMELIB_SPECIAL 8
59
60#define EOI      257
61#define TIME     258
62#define DATE     259
63
64#define TIMELIB_XMLRPC_SOAP    260
65#define TIMELIB_TIME12         261
66#define TIMELIB_TIME24         262
67#define TIMELIB_GNU_NOCOLON    263
68#define TIMELIB_GNU_NOCOLON_TZ 264
69#define TIMELIB_ISO_NOCOLON    265
70
71#define TIMELIB_AMERICAN       266
72#define TIMELIB_ISO_DATE       267
73#define TIMELIB_DATE_FULL      268
74#define TIMELIB_DATE_TEXT      269
75#define TIMELIB_DATE_NOCOLON   270
76#define TIMELIB_PG_YEARDAY     271
77#define TIMELIB_PG_TEXT        272
78#define TIMELIB_PG_REVERSE     273
79#define TIMELIB_CLF            274
80#define TIMELIB_DATE_NO_DAY    275
81#define TIMELIB_SHORTDATE_WITH_TIME 276
82#define TIMELIB_DATE_FULL_POINTED 277
83#define TIMELIB_TIME24_WITH_ZONE 278
84#define TIMELIB_ISO_WEEK       279
85#define TIMELIB_LF_DAY_OF_MONTH 280
86#define TIMELIB_WEEK_DAY_OF_MONTH 281
87
88#define TIMELIB_TIMEZONE       300
89#define TIMELIB_AGO            301
90
91#define TIMELIB_RELATIVE       310
92
93#define TIMELIB_ERROR          999
94
95/* Some compilers like AIX, defines uchar in sys/types.h */
96#undef uchar
97typedef unsigned char uchar;
98
99#define   BSIZE    8192
100
101#define   YYCTYPE      uchar
102#define   YYCURSOR     cursor
103#define   YYLIMIT      s->lim
104#define   YYMARKER     s->ptr
105#define   YYFILL(n)    return EOI;
106
107#define   RET(i)       {s->cur = cursor; return i;}
108
109#define timelib_string_free free
110
111#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; } }
112#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; }
113#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
114#define TIMELIB_UNHAVE_DATE() { s->time->have_date = 0; s->time->d = 0; s->time->m = 0; s->time->y = 0; }
115#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
116#define TIMELIB_HAVE_WEEKDAY_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_weekday_relative = 1; }
117#define TIMELIB_HAVE_SPECIAL_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_special_relative = 1; }
118#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, "Double timezone specification") : add_warning(s, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
119
120#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
121#define TIMELIB_DEINIT timelib_string_free(str)
122#define TIMELIB_ADJUST_RELATIVE_WEEKDAY() if (in->time.have_weekday_relative && (in.rel.d > 0)) { in.rel.d -= 7; }
123
124#define TIMELIB_PROCESS_YEAR(x, l) { \
125    if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
126    /*  (x) = 0; */          \
127    } else if ((x) < 100) {  \
128        if ((x) < 70) {      \
129            (x) += 2000;     \
130        } else {             \
131            (x) += 1900;     \
132        }                    \
133    }                        \
134}
135
136#ifdef DEBUG_PARSER
137#define DEBUG_OUTPUT(s) printf("%s\n", s);
138#define YYDEBUG(s,c) { if (s != -1) { printf("state: %d ", s); printf("[%c]\n", c); } }
139#else
140#define DEBUG_OUTPUT(s)
141#define YYDEBUG(s,c)
142#endif
143
144#include "timelib_structs.h"
145
146typedef struct timelib_elems {
147    unsigned int   c; /* Number of elements */
148    char         **v; /* Values */
149} timelib_elems;
150
151typedef struct Scanner {
152    int           fd;
153    uchar        *lim, *str, *ptr, *cur, *tok, *pos;
154    unsigned int  line, len;
155    struct timelib_error_container *errors;
156
157    struct timelib_time *time;
158    const timelib_tzdb  *tzdb;
159} Scanner;
160
161typedef struct _timelib_lookup_table {
162    const char *name;
163    int         type;
164    int         value;
165} timelib_lookup_table;
166
167typedef struct _timelib_relunit {
168    const char *name;
169    int         unit;
170    int         multiplier;
171} timelib_relunit;
172
173#define HOUR(a) (int)(a * 60)
174
175/* The timezone table. */
176const static timelib_tz_lookup_table timelib_timezone_lookup[] = {
177#include "timezonemap.h"
178    { NULL, 0, 0, NULL },
179};
180
181const static timelib_tz_lookup_table timelib_timezone_fallbackmap[] = {
182#include "fallbackmap.h"
183    { NULL, 0, 0, NULL },
184};
185
186const static timelib_tz_lookup_table timelib_timezone_utc[] = {
187    { "utc", 0, 0, "UTC" },
188};
189
190static timelib_relunit const timelib_relunit_lookup[] = {
191    { "sec",         TIMELIB_SECOND,  1 },
192    { "secs",        TIMELIB_SECOND,  1 },
193    { "second",      TIMELIB_SECOND,  1 },
194    { "seconds",     TIMELIB_SECOND,  1 },
195    { "min",         TIMELIB_MINUTE,  1 },
196    { "mins",        TIMELIB_MINUTE,  1 },
197    { "minute",      TIMELIB_MINUTE,  1 },
198    { "minutes",     TIMELIB_MINUTE,  1 },
199    { "hour",        TIMELIB_HOUR,    1 },
200    { "hours",       TIMELIB_HOUR,    1 },
201    { "day",         TIMELIB_DAY,     1 },
202    { "days",        TIMELIB_DAY,     1 },
203    { "week",        TIMELIB_DAY,     7 },
204    { "weeks",       TIMELIB_DAY,     7 },
205    { "fortnight",   TIMELIB_DAY,    14 },
206    { "fortnights",  TIMELIB_DAY,    14 },
207    { "forthnight",  TIMELIB_DAY,    14 },
208    { "forthnights", TIMELIB_DAY,    14 },
209    { "month",       TIMELIB_MONTH,   1 },
210    { "months",      TIMELIB_MONTH,   1 },
211    { "year",        TIMELIB_YEAR,    1 },
212    { "years",       TIMELIB_YEAR,    1 },
213
214    { "monday",      TIMELIB_WEEKDAY, 1 },
215    { "mon",         TIMELIB_WEEKDAY, 1 },
216    { "tuesday",     TIMELIB_WEEKDAY, 2 },
217    { "tue",         TIMELIB_WEEKDAY, 2 },
218    { "wednesday",   TIMELIB_WEEKDAY, 3 },
219    { "wed",         TIMELIB_WEEKDAY, 3 },
220    { "thursday",    TIMELIB_WEEKDAY, 4 },
221    { "thu",         TIMELIB_WEEKDAY, 4 },
222    { "friday",      TIMELIB_WEEKDAY, 5 },
223    { "fri",         TIMELIB_WEEKDAY, 5 },
224    { "saturday",    TIMELIB_WEEKDAY, 6 },
225    { "sat",         TIMELIB_WEEKDAY, 6 },
226    { "sunday",      TIMELIB_WEEKDAY, 0 },
227    { "sun",         TIMELIB_WEEKDAY, 0 },
228
229    { "weekday",     TIMELIB_SPECIAL, TIMELIB_SPECIAL_WEEKDAY },
230    { "weekdays",    TIMELIB_SPECIAL, TIMELIB_SPECIAL_WEEKDAY },
231    { NULL,          0,          0 }
232};
233
234/* The relative text table. */
235static timelib_lookup_table const timelib_reltext_lookup[] = {
236    { "first",    0,  1 },
237    { "next",     0,  1 },
238    { "second",   0,  2 },
239    { "third",    0,  3 },
240    { "fourth",   0,  4 },
241    { "fifth",    0,  5 },
242    { "sixth",    0,  6 },
243    { "seventh",  0,  7 },
244    { "eight",    0,  8 },
245    { "eighth",   0,  8 },
246    { "ninth",    0,  9 },
247    { "tenth",    0, 10 },
248    { "eleventh", 0, 11 },
249    { "twelfth",  0, 12 },
250    { "last",     0, -1 },
251    { "previous", 0, -1 },
252    { "this",     1,  0 },
253    { NULL,       1,  0 }
254};
255
256/* The month table. */
257static timelib_lookup_table const timelib_month_lookup[] = {
258    { "jan",  0,  1 },
259    { "feb",  0,  2 },
260    { "mar",  0,  3 },
261    { "apr",  0,  4 },
262    { "may",  0,  5 },
263    { "jun",  0,  6 },
264    { "jul",  0,  7 },
265    { "aug",  0,  8 },
266    { "sep",  0,  9 },
267    { "sept", 0,  9 },
268    { "oct",  0, 10 },
269    { "nov",  0, 11 },
270    { "dec",  0, 12 },
271    { "i",    0,  1 },
272    { "ii",   0,  2 },
273    { "iii",  0,  3 },
274    { "iv",   0,  4 },
275    { "v",    0,  5 },
276    { "vi",   0,  6 },
277    { "vii",  0,  7 },
278    { "viii", 0,  8 },
279    { "ix",   0,  9 },
280    { "x",    0, 10 },
281    { "xi",   0, 11 },
282    { "xii",  0, 12 },
283
284    { "january",   0,  1 },
285    { "february",  0,  2 },
286    { "march",     0,  3 },
287    { "april",     0,  4 },
288    { "may",       0,  5 },
289    { "june",      0,  6 },
290    { "july",      0,  7 },
291    { "august",    0,  8 },
292    { "september", 0,  9 },
293    { "october",   0, 10 },
294    { "november",  0, 11 },
295    { "december",  0, 12 },
296    {  NULL,       0,  0 }
297};
298
299#if 0
300static char* timelib_ltrim(char *s)
301{
302    char *ptr = s;
303    while (ptr[0] == ' ' || ptr[0] == '\t') {
304        ptr++;
305    }
306    return ptr;
307}
308#endif
309
310#if 0
311uchar *fill(Scanner *s, uchar *cursor){
312    if(!s->eof){
313        unsigned int cnt = s->tok - s->bot;
314        if(cnt){
315            memcpy(s->bot, s->tok, s->lim - s->tok);
316            s->tok = s->bot;
317            s->ptr -= cnt;
318            cursor -= cnt;
319            s->pos -= cnt;
320            s->lim -= cnt;
321        }
322        if((s->top - s->lim) < BSIZE){
323            uchar *buf = (uchar*) malloc(((s->lim - s->bot) + BSIZE)*sizeof(uchar));
324            memcpy(buf, s->tok, s->lim - s->tok);
325            s->tok = buf;
326            s->ptr = &buf[s->ptr - s->bot];
327            cursor = &buf[cursor - s->bot];
328            s->pos = &buf[s->pos - s->bot];
329            s->lim = &buf[s->lim - s->bot];
330            s->top = &s->lim[BSIZE];
331            free(s->bot);
332            s->bot = buf;
333        }
334        if((cnt = read(s->fd, (char*) s->lim, BSIZE)) != BSIZE){
335            s->eof = &s->lim[cnt]; *(s->eof)++ = '\n';
336        }
337        s->lim += cnt;
338    }
339    return cursor;
340}
341#endif
342
343static void add_warning(Scanner *s, char *error)
344{
345    s->errors->warning_count++;
346    s->errors->warning_messages = realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
347    s->errors->warning_messages[s->errors->warning_count - 1].position = s->tok ? s->tok - s->str : 0;
348    s->errors->warning_messages[s->errors->warning_count - 1].character = s->tok ? *s->tok : 0;
349    s->errors->warning_messages[s->errors->warning_count - 1].message = strdup(error);
350}
351
352static void add_error(Scanner *s, char *error)
353{
354    s->errors->error_count++;
355    s->errors->error_messages = realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message));
356    s->errors->error_messages[s->errors->error_count - 1].position = s->tok ? s->tok - s->str : 0;
357    s->errors->error_messages[s->errors->error_count - 1].character = s->tok ? *s->tok : 0;
358    s->errors->error_messages[s->errors->error_count - 1].message = strdup(error);
359}
360
361static void add_pbf_warning(Scanner *s, char *error, char *sptr, char *cptr)
362{
363    s->errors->warning_count++;
364    s->errors->warning_messages = realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
365    s->errors->warning_messages[s->errors->warning_count - 1].position = cptr - sptr;
366    s->errors->warning_messages[s->errors->warning_count - 1].character = *cptr;
367    s->errors->warning_messages[s->errors->warning_count - 1].message = strdup(error);
368}
369
370static void add_pbf_error(Scanner *s, char *error, char *sptr, char *cptr)
371{
372    s->errors->error_count++;
373    s->errors->error_messages = realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message));
374    s->errors->error_messages[s->errors->error_count - 1].position = cptr - sptr;
375    s->errors->error_messages[s->errors->error_count - 1].character = *cptr;
376    s->errors->error_messages[s->errors->error_count - 1].message = strdup(error);
377}
378
379static timelib_sll timelib_meridian(char **ptr, timelib_sll h)
380{
381    timelib_sll retval = 0;
382
383    while (!strchr("AaPp", **ptr)) {
384        ++*ptr;
385    }
386    if (**ptr == 'a' || **ptr == 'A') {
387        if (h == 12) {
388            retval = -12;
389        }
390    } else if (h != 12) {
391        retval = 12;
392    }
393    ++*ptr;
394    if (**ptr == '.') {
395        *ptr += 3;
396    } else {
397        ++*ptr;
398    }
399    return retval;
400}
401
402static timelib_sll timelib_meridian_with_check(char **ptr, timelib_sll h)
403{
404    timelib_sll retval = 0;
405
406    while (**ptr && !strchr("AaPp", **ptr)) {
407        ++*ptr;
408    }
409    if(!**ptr) {
410        return TIMELIB_UNSET;
411    }
412    if (**ptr == 'a' || **ptr == 'A') {
413        if (h == 12) {
414            retval = -12;
415        }
416    } else if (h != 12) {
417        retval = 12;
418    }
419    ++*ptr;
420    if (**ptr == '.') {
421        ++*ptr;
422        if (**ptr != 'm' && **ptr != 'M') {
423            return TIMELIB_UNSET;
424        }
425        ++*ptr;
426        if (**ptr != '.' ) {
427            return TIMELIB_UNSET;
428        }
429        ++*ptr;
430    } else if (**ptr == 'm' || **ptr == 'M') {
431        ++*ptr;
432    } else {
433        return TIMELIB_UNSET;
434    }
435    return retval;
436}
437
438static char *timelib_string(Scanner *s)
439{
440    char *tmp = calloc(1, s->cur - s->tok + 1);
441    memcpy(tmp, s->tok, s->cur - s->tok);
442
443    return tmp;
444}
445
446static timelib_sll timelib_get_nr_ex(char **ptr, int max_length, int *scanned_length)
447{
448    char *begin, *end, *str;
449    timelib_sll tmp_nr = TIMELIB_UNSET;
450    int len = 0;
451
452    while ((**ptr < '0') || (**ptr > '9')) {
453        if (**ptr == '\0') {
454            return TIMELIB_UNSET;
455        }
456        ++*ptr;
457    }
458    begin = *ptr;
459    while ((**ptr >= '0') && (**ptr <= '9') && len < max_length) {
460        ++*ptr;
461        ++len;
462    }
463    end = *ptr;
464    if (scanned_length) {
465        *scanned_length = end - begin;
466    }
467    str = calloc(1, end - begin + 1);
468    memcpy(str, begin, end - begin);
469    tmp_nr = strtoll(str, NULL, 10);
470    free(str);
471    return tmp_nr;
472}
473
474static timelib_sll timelib_get_nr(char **ptr, int max_length)
475{
476    return timelib_get_nr_ex(ptr, max_length, NULL);
477}
478
479static void timelib_skip_day_suffix(char **ptr)
480{
481    if (isspace(**ptr)) {
482        return;
483    }
484    if (!strncasecmp(*ptr, "nd", 2) || !strncasecmp(*ptr, "rd", 2) ||!strncasecmp(*ptr, "st", 2) || !strncasecmp(*ptr, "th", 2)) {
485        *ptr += 2;
486    }
487}
488
489static double timelib_get_frac_nr(char **ptr, int max_length)
490{
491    char *begin, *end, *str;
492    double tmp_nr = TIMELIB_UNSET;
493    int len = 0;
494
495    while ((**ptr != '.') && (**ptr != ':') && ((**ptr < '0') || (**ptr > '9'))) {
496        if (**ptr == '\0') {
497            return TIMELIB_UNSET;
498        }
499        ++*ptr;
500    }
501    begin = *ptr;
502    while (((**ptr == '.') || (**ptr == ':') || ((**ptr >= '0') && (**ptr <= '9'))) && len < max_length) {
503        ++*ptr;
504        ++len;
505    }
506    end = *ptr;
507    str = calloc(1, end - begin + 1);
508    memcpy(str, begin, end - begin);
509    if (str[0] == ':') {
510        str[0] = '.';
511    }
512    tmp_nr = strtod(str, NULL);
513    free(str);
514    return tmp_nr;
515}
516
517static timelib_ull timelib_get_unsigned_nr(char **ptr, int max_length)
518{
519    timelib_ull dir = 1;
520
521    while (((**ptr < '0') || (**ptr > '9')) && (**ptr != '+') && (**ptr != '-')) {
522        if (**ptr == '\0') {
523            return TIMELIB_UNSET;
524        }
525        ++*ptr;
526    }
527
528    while (**ptr == '+' || **ptr == '-')
529    {
530        if (**ptr == '-') {
531            dir *= -1;
532        }
533        ++*ptr;
534    }
535    return dir * timelib_get_nr(ptr, max_length);
536}
537
538static long timelib_parse_tz_cor(char **ptr)
539{
540    char *begin = *ptr, *end;
541    long  tmp;
542
543    while (isdigit(**ptr) || **ptr == ':') {
544        ++*ptr;
545    }
546    end = *ptr;
547    switch (end - begin) {
548        case 1:
549        case 2:
550            return HOUR(strtol(begin, NULL, 10));
551            break;
552        case 3:
553        case 4:
554            if (begin[1] == ':') {
555                tmp = HOUR(strtol(begin, NULL, 10)) + strtol(begin + 2, NULL, 10);
556                return tmp;
557            } else if (begin[2] == ':') {
558                tmp = HOUR(strtol(begin, NULL, 10)) + strtol(begin + 3, NULL, 10);
559                return tmp;
560            } else {
561                tmp = strtol(begin, NULL, 10);
562                return HOUR(tmp / 100) + tmp % 100;
563            }
564        case 5:
565            tmp = HOUR(strtol(begin, NULL, 10)) + strtol(begin + 3, NULL, 10);
566            return tmp;
567    }
568    return 0;
569}
570
571static timelib_sll timelib_lookup_relative_text(char **ptr, int *behavior)
572{
573    char *word;
574    char *begin = *ptr, *end;
575    timelib_sll  value = 0;
576    const timelib_lookup_table *tp;
577
578    while ((**ptr >= 'A' && **ptr <= 'Z') || (**ptr >= 'a' && **ptr <= 'z')) {
579        ++*ptr;
580    }
581    end = *ptr;
582    word = calloc(1, end - begin + 1);
583    memcpy(word, begin, end - begin);
584
585    for (tp = timelib_reltext_lookup; tp->name; tp++) {
586        if (strcasecmp(word, tp->name) == 0) {
587            value = tp->value;
588            *behavior = tp->type;
589        }
590    }
591
592    free(word);
593    return value;
594}
595
596static timelib_sll timelib_get_relative_text(char **ptr, int *behavior)
597{
598    while (**ptr == ' ' || **ptr == '\t' || **ptr == '-' || **ptr == '/') {
599        ++*ptr;
600    }
601    return timelib_lookup_relative_text(ptr, behavior);
602}
603
604static long timelib_lookup_month(char **ptr)
605{
606    char *word;
607    char *begin = *ptr, *end;
608    long  value = 0;
609    const timelib_lookup_table *tp;
610
611    while ((**ptr >= 'A' && **ptr <= 'Z') || (**ptr >= 'a' && **ptr <= 'z')) {
612        ++*ptr;
613    }
614    end = *ptr;
615    word = calloc(1, end - begin + 1);
616    memcpy(word, begin, end - begin);
617
618    for (tp = timelib_month_lookup; tp->name; tp++) {
619        if (strcasecmp(word, tp->name) == 0) {
620            value = tp->value;
621        }
622    }
623
624    free(word);
625    return value;
626}
627
628static long timelib_get_month(char **ptr)
629{
630    while (**ptr == ' ' || **ptr == '\t' || **ptr == '-' || **ptr == '.' || **ptr == '/') {
631        ++*ptr;
632    }
633    return timelib_lookup_month(ptr);
634}
635
636static void timelib_eat_spaces(char **ptr)
637{
638    while (**ptr == ' ' || **ptr == '\t') {
639        ++*ptr;
640    }
641}
642
643static void timelib_eat_until_separator(char **ptr)
644{
645    ++*ptr;
646    while (strchr(" \t.,:;/-0123456789", **ptr) == NULL) {
647        ++*ptr;
648    }
649}
650
651static const timelib_relunit* timelib_lookup_relunit(char **ptr)
652{
653    char *word;
654    char *begin = *ptr, *end;
655    const timelib_relunit *tp, *value = NULL;
656
657    while (**ptr != '\0' && **ptr != ' ' && **ptr != ',' && **ptr != '\t' && **ptr != ';' && **ptr != ':' &&
658           **ptr != '/' && **ptr != '.' && **ptr != '-' && **ptr != '(' && **ptr != ')' ) {
659        ++*ptr;
660    }
661    end = *ptr;
662    word = calloc(1, end - begin + 1);
663    memcpy(word, begin, end - begin);
664
665    for (tp = timelib_relunit_lookup; tp->name; tp++) {
666        if (strcasecmp(word, tp->name) == 0) {
667            value = tp;
668            break;
669        }
670    }
671
672    free(word);
673    return value;
674}
675
676static void timelib_set_relative(char **ptr, timelib_sll amount, int behavior, Scanner *s)
677{
678    const timelib_relunit* relunit;
679
680    if (!(relunit = timelib_lookup_relunit(ptr))) {
681        return;
682    }
683
684    switch (relunit->unit) {
685        case TIMELIB_SECOND: s->time->relative.s += amount * relunit->multiplier; break;
686        case TIMELIB_MINUTE: s->time->relative.i += amount * relunit->multiplier; break;
687        case TIMELIB_HOUR:   s->time->relative.h += amount * relunit->multiplier; break;
688        case TIMELIB_DAY:    s->time->relative.d += amount * relunit->multiplier; break;
689        case TIMELIB_MONTH:  s->time->relative.m += amount * relunit->multiplier; break;
690        case TIMELIB_YEAR:   s->time->relative.y += amount * relunit->multiplier; break;
691
692        case TIMELIB_WEEKDAY:
693            TIMELIB_HAVE_WEEKDAY_RELATIVE();
694            TIMELIB_UNHAVE_TIME();
695            s->time->relative.d += (amount > 0 ? amount - 1 : amount) * 7;
696            s->time->relative.weekday = relunit->multiplier;
697            s->time->relative.weekday_behavior = behavior;
698            break;
699
700        case TIMELIB_SPECIAL:
701            TIMELIB_HAVE_SPECIAL_RELATIVE();
702            TIMELIB_UNHAVE_TIME();
703            s->time->relative.special.type = relunit->multiplier;
704            s->time->relative.special.amount = amount;
705    }
706}
707
708const static timelib_tz_lookup_table* zone_search(const char *word, long gmtoffset, int isdst)
709{
710    int first_found = 0;
711    const timelib_tz_lookup_table  *tp, *first_found_elem = NULL;
712    const timelib_tz_lookup_table  *fmp;
713
714    if (strcasecmp("utc", word) == 0 || strcasecmp("gmt", word) == 0) {
715        return timelib_timezone_utc;
716    }
717
718    for (tp = timelib_timezone_lookup; tp->name; tp++) {
719        if (strcasecmp(word, tp->name) == 0) {
720            if (!first_found) {
721                first_found = 1;
722                first_found_elem = tp;
723                if (gmtoffset == -1) {
724                    return tp;
725                }
726            }
727            if (tp->gmtoffset == gmtoffset) {
728                return tp;
729            }
730        }
731    }
732    if (first_found) {
733        return first_found_elem;
734    }
735
736    for (tp = timelib_timezone_lookup; tp->name; tp++) {
737        if (tp->full_tz_name && strcasecmp(word, tp->full_tz_name) == 0) {
738            if (!first_found) {
739                first_found = 1;
740                first_found_elem = tp;
741                if (gmtoffset == -1) {
742                    return tp;
743                }
744            }
745            if (tp->gmtoffset == gmtoffset) {
746                return tp;
747            }
748        }
749    }
750    if (first_found) {
751        return first_found_elem;
752    }
753
754
755    /* Still didn't find anything, let's find the zone solely based on
756     * offset/isdst then */
757    for (fmp = timelib_timezone_fallbackmap; fmp->name; fmp++) {
758        if ((fmp->gmtoffset * 60) == gmtoffset && fmp->type == isdst) {
759            return fmp;
760        }
761    }
762    return NULL;
763}
764
765static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, int *found)
766{
767    char *word;
768    char *begin = *ptr, *end;
769    long  value = 0;
770    const timelib_tz_lookup_table *tp;
771
772    while (**ptr != '\0' && **ptr != ')' && **ptr != ' ') {
773        ++*ptr;
774    }
775    end = *ptr;
776    word = calloc(1, end - begin + 1);
777    memcpy(word, begin, end - begin);
778
779    if ((tp = zone_search(word, -1, 0))) {
780        value = -tp->gmtoffset / 60;
781        *dst = tp->type;
782        value += tp->type * 60;
783        *found = 1;
784    } else {
785        *found = 0;
786    }
787
788    *tz_abbr = word;
789    return value;
790}
791
792static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_wrapper)
793{
794    timelib_tzinfo *res;
795    long            retval = 0;
796
797    *tz_not_found = 0;
798
799    while (**ptr == ' ' || **ptr == '\t' || **ptr == '(') {
800        ++*ptr;
801    }
802    if ((*ptr)[0] == 'G' && (*ptr)[1] == 'M' && (*ptr)[2] == 'T' && ((*ptr)[3] == '+' || (*ptr)[3] == '-')) {
803        *ptr += 3;
804    }
805    if (**ptr == '+') {
806        ++*ptr;
807        t->is_localtime = 1;
808        t->zone_type = TIMELIB_ZONETYPE_OFFSET;
809        *tz_not_found = 0;
810        t->dst = 0;
811
812        retval = -1 * timelib_parse_tz_cor(ptr);
813    } else if (**ptr == '-') {
814        ++*ptr;
815        t->is_localtime = 1;
816        t->zone_type = TIMELIB_ZONETYPE_OFFSET;
817        *tz_not_found = 0;
818        t->dst = 0;
819
820        retval = timelib_parse_tz_cor(ptr);
821    } else {
822        int found = 0;
823        long offset;
824        char *tz_abbr;
825
826        t->is_localtime = 1;
827
828        offset = timelib_lookup_zone(ptr, dst, &tz_abbr, &found);
829        if (found) {
830            t->zone_type = TIMELIB_ZONETYPE_ABBR;
831        }
832#if 0
833        /* If we found a TimeZone identifier, use it */
834        if (tz_name) {
835            t->tz_info = timelib_parse_tzfile(tz_name);
836            t->zone_type = TIMELIB_ZONETYPE_ID;
837        }
838#endif
839        /* If we have a TimeZone identifier to start with, use it */
840        if (strstr(tz_abbr, "/") || strcmp(tz_abbr, "UTC") == 0) {
841            if ((res = tz_wrapper(tz_abbr, tzdb)) != NULL) {
842                t->tz_info = res;
843                t->zone_type = TIMELIB_ZONETYPE_ID;
844                found++;
845            }
846        }
847        if (found && t->zone_type != TIMELIB_ZONETYPE_ID) {
848            timelib_time_tz_abbr_update(t, tz_abbr);
849        }
850        free(tz_abbr);
851        *tz_not_found = (found == 0);
852        retval = offset;
853    }
854    while (**ptr == ')') {
855        ++*ptr;
856    }
857    return retval;
858}
859
860#define timelib_split_free(arg) {       \
861    int i;                         \
862    for (i = 0; i < arg.c; i++) {  \
863        free(arg.v[i]);            \
864    }                              \
865    if (arg.v) {                   \
866        free(arg.v);               \
867    }                              \
868}
869
870static int scan(Scanner *s, timelib_tz_get_wrapper tz_get_wrapper)
871{
872    uchar *cursor = s->cur;
873    char *str, *ptr = NULL;
874
875std:
876    s->tok = cursor;
877    s->len = 0;
878#line 1001 "ext/date/lib/parse_date.re"
879
880
881
882#line 883 "ext/date/lib/parse_date.c"
883{
884    YYCTYPE yych;
885    unsigned int yyaccept = 0;
886    static const unsigned char yybm[] = {
887          0,   0,   0,   0,   0,   0,   0,   0,
888          0, 100,   0,   0,   0,   0,   0,   0,
889          0,   0,   0,   0,   0,   0,   0,   0,
890          0,   0,   0,   0,   0,   0,   0,   0,
891        100,   0,   0,   0,   0,   0,   0,   0,
892          0,   0,   0, 128,  64, 160,  96,   0,
893          2,   2,   2,   2,   2,   2,   2,   2,
894          2,   2,   0,   0,   0,   0,   0,   0,
895          0,   8,   8,   8,   8,   8,   8,   8,
896          8,   8,   8,   8,   8,   8,   8,   8,
897          8,   8,   8,   8,   8,   8,   8,   8,
898          8,   8,   8,   0,   0,   0,   0,   0,
899          0,  24,  24,  24,  88,  24,  24,  24,
900         88,  24,  24,  24,  24,  24,  88,  24,
901         24,  24,  88,  88,  88,  24,  24,  24,
902         24,  24,  24,   0,   0,   0,   0,   0,
903          0,   0,   0,   0,   0,   0,   0,   0,
904          0,   0,   0,   0,   0,   0,   0,   0,
905          0,   0,   0,   0,   0,   0,   0,   0,
906          0,   0,   0,   0,   0,   0,   0,   0,
907          0,   0,   0,   0,   0,   0,   0,   0,
908          0,   0,   0,   0,   0,   0,   0,   0,
909          0,   0,   0,   0,   0,   0,   0,   0,
910          0,   0,   0,   0,   0,   0,   0,   0,
911          0,   0,   0,   0,   0,   0,   0,   0,
912          0,   0,   0,   0,   0,   0,   0,   0,
913          0,   0,   0,   0,   0,   0,   0,   0,
914          0,   0,   0,   0,   0,   0,   0,   0,
915          0,   0,   0,   0,   0,   0,   0,   0,
916          0,   0,   0,   0,   0,   0,   0,   0,
917          0,   0,   0,   0,   0,   0,   0,   0,
918          0,   0,   0,   0,   0,   0,   0,   0,
919    };
920
921    YYDEBUG(0, *YYCURSOR);
922    if ((YYLIMIT - YYCURSOR) < 31) YYFILL(31);
923    yych = *YYCURSOR;
924    YYDEBUG(-1, yych);
925    switch (yych) {
926    case 0x00:
927    case '\n':  goto yy52;
928    case '\t':
929    case ' ':   goto yy49;
930    case '(':   goto yy46;
931    case '+':
932    case '-':   goto yy31;
933    case ',':
934    case '.':   goto yy51;
935    case '0':   goto yy26;
936    case '1':   goto yy27;
937    case '2':   goto yy28;
938    case '3':   goto yy29;
939    case '4':
940    case '5':
941    case '6':
942    case '7':
943    case '8':
944    case '9':   goto yy30;
945    case '@':   goto yy12;
946    case 'A':   goto yy37;
947    case 'B':   goto yy18;
948    case 'C':
949    case 'H':
950    case 'K':
951    case 'Q':
952    case 'R':
953    case 'U':
954    case 'Z':   goto yy47;
955    case 'D':   goto yy41;
956    case 'E':   goto yy22;
957    case 'F':   goto yy14;
958    case 'G':   goto yy45;
959    case 'I':   goto yy32;
960    case 'J':   goto yy35;
961    case 'L':   goto yy16;
962    case 'M':   goto yy8;
963    case 'N':   goto yy6;
964    case 'O':   goto yy39;
965    case 'P':   goto yy24;
966    case 'S':   goto yy20;
967    case 'T':   goto yy10;
968    case 'V':   goto yy33;
969    case 'W':   goto yy43;
970    case 'X':   goto yy34;
971    case 'Y':   goto yy3;
972    case 'a':   goto yy38;
973    case 'b':   goto yy19;
974    case 'c':
975    case 'g':
976    case 'h':
977    case 'i':
978    case 'k':
979    case 'q':
980    case 'r':
981    case 'u':
982    case 'v':
983    case 'x':
984    case 'z':   goto yy48;
985    case 'd':   goto yy42;
986    case 'e':   goto yy23;
987    case 'f':   goto yy15;
988    case 'j':   goto yy36;
989    case 'l':   goto yy17;
990    case 'm':   goto yy9;
991    case 'n':   goto yy7;
992    case 'o':   goto yy40;
993    case 'p':   goto yy25;
994    case 's':   goto yy21;
995    case 't':   goto yy11;
996    case 'w':   goto yy44;
997    case 'y':   goto yy5;
998    default:    goto yy54;
999    }
1000yy2:
1001    YYDEBUG(2, *YYCURSOR);
1002#line 1087 "ext/date/lib/parse_date.re"
1003    {
1004        DEBUG_OUTPUT("firstdayof | lastdayof");
1005        TIMELIB_INIT;
1006        TIMELIB_HAVE_RELATIVE();
1007
1008        /* skip "last day of" or "first day of" */
1009        if (*ptr == 'l') {
1010            s->time->relative.first_last_day_of = 2;
1011        } else {
1012            s->time->relative.first_last_day_of = 1;
1013        }
1014
1015        TIMELIB_DEINIT;
1016        return TIMELIB_LF_DAY_OF_MONTH;
1017    }
1018#line 1019 "ext/date/lib/parse_date.c"
1019yy3:
1020    YYDEBUG(3, *YYCURSOR);
1021    ++YYCURSOR;
1022    if ((yych = *YYCURSOR) <= 'E') {
1023        if (yych <= ')') {
1024            if (yych >= ')') goto yy140;
1025        } else {
1026            if (yych <= '@') goto yy4;
1027            if (yych <= 'D') goto yy141;
1028            goto yy1523;
1029        }
1030    } else {
1031        if (yych <= 'd') {
1032            if (yych <= 'Z') goto yy141;
1033            if (yych >= 'a') goto yy146;
1034        } else {
1035            if (yych <= 'e') goto yy1532;
1036            if (yych <= 'z') goto yy146;
1037        }
1038    }
1039yy4:
1040    YYDEBUG(4, *YYCURSOR);
1041#line 1681 "ext/date/lib/parse_date.re"
1042    {
1043        int tz_not_found;
1044        DEBUG_OUTPUT("tzcorrection | tz");
1045        TIMELIB_INIT;
1046        TIMELIB_HAVE_TZ();
1047        s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
1048        if (tz_not_found) {
1049            add_error(s, "The timezone could not be found in the database");
1050        }
1051        TIMELIB_DEINIT;
1052        return TIMELIB_TIMEZONE;
1053    }
1054#line 1055 "ext/date/lib/parse_date.c"
1055yy5:
1056    YYDEBUG(5, *YYCURSOR);
1057    yych = *++YYCURSOR;
1058    if (yych <= 'E') {
1059        if (yych <= ')') {
1060            if (yych <= '(') goto yy4;
1061            goto yy140;
1062        } else {
1063            if (yych <= '@') goto yy4;
1064            if (yych <= 'D') goto yy141;
1065            goto yy1523;
1066        }
1067    } else {
1068        if (yych <= 'd') {
1069            if (yych <= 'Z') goto yy141;
1070            if (yych <= '`') goto yy4;
1071            goto yy141;
1072        } else {
1073            if (yych <= 'e') goto yy1523;
1074            if (yych <= 'z') goto yy141;
1075            goto yy4;
1076        }
1077    }
1078yy6:
1079    YYDEBUG(6, *YYCURSOR);
1080    yych = *++YYCURSOR;
1081    if (yych <= 'O') {
1082        if (yych <= 'D') {
1083            if (yych == ')') goto yy140;
1084            if (yych <= '@') goto yy4;
1085            goto yy141;
1086        } else {
1087            if (yych <= 'H') {
1088                if (yych <= 'E') goto yy1494;
1089                goto yy141;
1090            } else {
1091                if (yych <= 'I') goto yy1495;
1092                if (yych <= 'N') goto yy141;
1093                goto yy1493;
1094            }
1095        }
1096    } else {
1097        if (yych <= 'h') {
1098            if (yych <= '`') {
1099                if (yych <= 'Z') goto yy141;
1100                goto yy4;
1101            } else {
1102                if (yych == 'e') goto yy1510;
1103                goto yy146;
1104            }
1105        } else {
1106            if (yych <= 'n') {
1107                if (yych <= 'i') goto yy1511;
1108                goto yy146;
1109            } else {
1110                if (yych <= 'o') goto yy1509;
1111                if (yych <= 'z') goto yy146;
1112                goto yy4;
1113            }
1114        }
1115    }
1116yy7:
1117    YYDEBUG(7, *YYCURSOR);
1118    yych = *++YYCURSOR;
1119    if (yych <= 'O') {
1120        if (yych <= 'D') {
1121            if (yych == ')') goto yy140;
1122            if (yych <= '@') goto yy4;
1123            goto yy141;
1124        } else {
1125            if (yych <= 'H') {
1126                if (yych <= 'E') goto yy1494;
1127                goto yy141;
1128            } else {
1129                if (yych <= 'I') goto yy1495;
1130                if (yych <= 'N') goto yy141;
1131                goto yy1493;
1132            }
1133        }
1134    } else {
1135        if (yych <= 'h') {
1136            if (yych <= '`') {
1137                if (yych <= 'Z') goto yy141;
1138                goto yy4;
1139            } else {
1140                if (yych == 'e') goto yy1494;
1141                goto yy141;
1142            }
1143        } else {
1144            if (yych <= 'n') {
1145                if (yych <= 'i') goto yy1495;
1146                goto yy141;
1147            } else {
1148                if (yych <= 'o') goto yy1493;
1149                if (yych <= 'z') goto yy141;
1150                goto yy4;
1151            }
1152        }
1153    }
1154yy8:
1155    YYDEBUG(8, *YYCURSOR);
1156    yych = *++YYCURSOR;
1157    if (yych <= 'O') {
1158        if (yych <= 'A') {
1159            if (yych == ')') goto yy140;
1160            if (yych <= '@') goto yy4;
1161            goto yy1463;
1162        } else {
1163            if (yych == 'I') goto yy1464;
1164            if (yych <= 'N') goto yy141;
1165            goto yy1465;
1166        }
1167    } else {
1168        if (yych <= 'h') {
1169            if (yych <= 'Z') goto yy141;
1170            if (yych <= '`') goto yy4;
1171            if (yych <= 'a') goto yy1478;
1172            goto yy146;
1173        } else {
1174            if (yych <= 'n') {
1175                if (yych <= 'i') goto yy1479;
1176                goto yy146;
1177            } else {
1178                if (yych <= 'o') goto yy1480;
1179                if (yych <= 'z') goto yy146;
1180                goto yy4;
1181            }
1182        }
1183    }
1184yy9:
1185    YYDEBUG(9, *YYCURSOR);
1186    yych = *++YYCURSOR;
1187    if (yych <= 'O') {
1188        if (yych <= 'A') {
1189            if (yych == ')') goto yy140;
1190            if (yych <= '@') goto yy4;
1191            goto yy1463;
1192        } else {
1193            if (yych == 'I') goto yy1464;
1194            if (yych <= 'N') goto yy141;
1195            goto yy1465;
1196        }
1197    } else {
1198        if (yych <= 'h') {
1199            if (yych <= 'Z') goto yy141;
1200            if (yych <= '`') goto yy4;
1201            if (yych <= 'a') goto yy1463;
1202            goto yy141;
1203        } else {
1204            if (yych <= 'n') {
1205                if (yych <= 'i') goto yy1464;
1206                goto yy141;
1207            } else {
1208                if (yych <= 'o') goto yy1465;
1209                if (yych <= 'z') goto yy141;
1210                goto yy4;
1211            }
1212        }
1213    }
1214yy10:
1215    YYDEBUG(10, *YYCURSOR);
1216    yyaccept = 0;
1217    yych = *(YYMARKER = ++YYCURSOR);
1218    YYDEBUG(-1, yych);
1219    switch (yych) {
1220    case ')':   goto yy140;
1221    case '0':
1222    case '1':   goto yy1393;
1223    case '2':   goto yy1394;
1224    case '3':
1225    case '4':
1226    case '5':
1227    case '6':
1228    case '7':
1229    case '8':
1230    case '9':   goto yy1395;
1231    case 'A':
1232    case 'B':
1233    case 'C':
1234    case 'D':
1235    case 'F':
1236    case 'G':
1237    case 'I':
1238    case 'J':
1239    case 'K':
1240    case 'L':
1241    case 'M':
1242    case 'N':
1243    case 'P':
1244    case 'Q':
1245    case 'R':
1246    case 'S':
1247    case 'T':
1248    case 'V':
1249    case 'X':
1250    case 'Y':
1251    case 'Z':   goto yy141;
1252    case 'E':   goto yy1388;
1253    case 'H':   goto yy1389;
1254    case 'O':   goto yy1390;
1255    case 'U':   goto yy1391;
1256    case 'W':   goto yy1392;
1257    case 'a':
1258    case 'b':
1259    case 'c':
1260    case 'd':
1261    case 'f':
1262    case 'g':
1263    case 'i':
1264    case 'j':
1265    case 'k':
1266    case 'l':
1267    case 'm':
1268    case 'n':
1269    case 'p':
1270    case 'q':
1271    case 'r':
1272    case 's':
1273    case 't':
1274    case 'v':
1275    case 'x':
1276    case 'y':
1277    case 'z':   goto yy146;
1278    case 'e':   goto yy1431;
1279    case 'h':   goto yy1432;
1280    case 'o':   goto yy1433;
1281    case 'u':   goto yy1434;
1282    case 'w':   goto yy1435;
1283    default:    goto yy4;
1284    }
1285yy11:
1286    YYDEBUG(11, *YYCURSOR);
1287    yyaccept = 0;
1288    yych = *(YYMARKER = ++YYCURSOR);
1289    YYDEBUG(-1, yych);
1290    switch (yych) {
1291    case ')':   goto yy140;
1292    case '0':
1293    case '1':   goto yy1393;
1294    case '2':   goto yy1394;
1295    case '3':
1296    case '4':
1297    case '5':
1298    case '6':
1299    case '7':
1300    case '8':
1301    case '9':   goto yy1395;
1302    case 'A':
1303    case 'B':
1304    case 'C':
1305    case 'D':
1306    case 'F':
1307    case 'G':
1308    case 'I':
1309    case 'J':
1310    case 'K':
1311    case 'L':
1312    case 'M':
1313    case 'N':
1314    case 'P':
1315    case 'Q':
1316    case 'R':
1317    case 'S':
1318    case 'T':
1319    case 'V':
1320    case 'X':
1321    case 'Y':
1322    case 'Z':
1323    case 'a':
1324    case 'b':
1325    case 'c':
1326    case 'd':
1327    case 'f':
1328    case 'g':
1329    case 'i':
1330    case 'j':
1331    case 'k':
1332    case 'l':
1333    case 'm':
1334    case 'n':
1335    case 'p':
1336    case 'q':
1337    case 'r':
1338    case 's':
1339    case 't':
1340    case 'v':
1341    case 'x':
1342    case 'y':
1343    case 'z':   goto yy141;
1344    case 'E':
1345    case 'e':   goto yy1388;
1346    case 'H':
1347    case 'h':   goto yy1389;
1348    case 'O':
1349    case 'o':   goto yy1390;
1350    case 'U':
1351    case 'u':   goto yy1391;
1352    case 'W':
1353    case 'w':   goto yy1392;
1354    default:    goto yy4;
1355    }
1356yy12:
1357    YYDEBUG(12, *YYCURSOR);
1358    yyaccept = 1;
1359    yych = *(YYMARKER = ++YYCURSOR);
1360    if (yych == '-') goto yy1384;
1361    if (yych <= '/') goto yy13;
1362    if (yych <= '9') goto yy1385;
1363yy13:
1364    YYDEBUG(13, *YYCURSOR);
1365#line 1776 "ext/date/lib/parse_date.re"
1366    {
1367        add_error(s, "Unexpected character");
1368        goto std;
1369    }
1370#line 1371 "ext/date/lib/parse_date.c"
1371yy14:
1372    YYDEBUG(14, *YYCURSOR);
1373    yych = *++YYCURSOR;
1374    if (yych <= 'R') {
1375        if (yych <= 'E') {
1376            if (yych <= ')') {
1377                if (yych <= '(') goto yy4;
1378                goto yy140;
1379            } else {
1380                if (yych <= '@') goto yy4;
1381                if (yych <= 'D') goto yy141;
1382                goto yy1320;
1383            }
1384        } else {
1385            if (yych <= 'N') {
1386                if (yych == 'I') goto yy1321;
1387                goto yy141;
1388            } else {
1389                if (yych <= 'O') goto yy1322;
1390                if (yych <= 'Q') goto yy141;
1391                goto yy1323;
1392            }
1393        }
1394    } else {
1395        if (yych <= 'i') {
1396            if (yych <= 'd') {
1397                if (yych <= 'Z') goto yy141;
1398                if (yych <= '`') goto yy4;
1399                goto yy146;
1400            } else {
1401                if (yych <= 'e') goto yy1361;
1402                if (yych <= 'h') goto yy146;
1403                goto yy1362;
1404            }
1405        } else {
1406            if (yych <= 'q') {
1407                if (yych == 'o') goto yy1363;
1408                goto yy146;
1409            } else {
1410                if (yych <= 'r') goto yy1364;
1411                if (yych <= 'z') goto yy146;
1412                goto yy4;
1413            }
1414        }
1415    }
1416yy15:
1417    YYDEBUG(15, *YYCURSOR);
1418    yych = *++YYCURSOR;
1419    if (yych <= 'R') {
1420        if (yych <= 'E') {
1421            if (yych <= ')') {
1422                if (yych <= '(') goto yy4;
1423                goto yy140;
1424            } else {
1425                if (yych <= '@') goto yy4;
1426                if (yych <= 'D') goto yy141;
1427                goto yy1320;
1428            }
1429        } else {
1430            if (yych <= 'N') {
1431                if (yych == 'I') goto yy1321;
1432                goto yy141;
1433            } else {
1434                if (yych <= 'O') goto yy1322;
1435                if (yych <= 'Q') goto yy141;
1436                goto yy1323;
1437            }
1438        }
1439    } else {
1440        if (yych <= 'i') {
1441            if (yych <= 'd') {
1442                if (yych <= 'Z') goto yy141;
1443                if (yych <= '`') goto yy4;
1444                goto yy141;
1445            } else {
1446                if (yych <= 'e') goto yy1320;
1447                if (yych <= 'h') goto yy141;
1448                goto yy1321;
1449            }
1450        } else {
1451            if (yych <= 'q') {
1452                if (yych == 'o') goto yy1322;
1453                goto yy141;
1454            } else {
1455                if (yych <= 'r') goto yy1323;
1456                if (yych <= 'z') goto yy141;
1457                goto yy4;
1458            }
1459        }
1460    }
1461yy16:
1462    YYDEBUG(16, *YYCURSOR);
1463    yych = *++YYCURSOR;
1464    if (yych <= 'A') {
1465        if (yych == ')') goto yy140;
1466        if (yych <= '@') goto yy4;
1467        goto yy1307;
1468    } else {
1469        if (yych <= '`') {
1470            if (yych <= 'Z') goto yy141;
1471            goto yy4;
1472        } else {
1473            if (yych <= 'a') goto yy1317;
1474            if (yych <= 'z') goto yy146;
1475            goto yy4;
1476        }
1477    }
1478yy17:
1479    YYDEBUG(17, *YYCURSOR);
1480    yych = *++YYCURSOR;
1481    if (yych <= 'A') {
1482        if (yych == ')') goto yy140;
1483        if (yych <= '@') goto yy4;
1484        goto yy1307;
1485    } else {
1486        if (yych <= '`') {
1487            if (yych <= 'Z') goto yy141;
1488            goto yy4;
1489        } else {
1490            if (yych <= 'a') goto yy1307;
1491            if (yych <= 'z') goto yy141;
1492            goto yy4;
1493        }
1494    }
1495yy18:
1496    YYDEBUG(18, *YYCURSOR);
1497    yych = *++YYCURSOR;
1498    if (yych <= 'A') {
1499        if (yych == ')') goto yy140;
1500        if (yych <= '@') goto yy4;
1501        goto yy1287;
1502    } else {
1503        if (yych <= '`') {
1504            if (yych <= 'Z') goto yy141;
1505            goto yy4;
1506        } else {
1507            if (yych <= 'a') goto yy1304;
1508            if (yych <= 'z') goto yy146;
1509            goto yy4;
1510        }
1511    }
1512yy19:
1513    YYDEBUG(19, *YYCURSOR);
1514    yych = *++YYCURSOR;
1515    if (yych <= 'A') {
1516        if (yych == ')') goto yy140;
1517        if (yych <= '@') goto yy4;
1518        goto yy1287;
1519    } else {
1520        if (yych <= '`') {
1521            if (yych <= 'Z') goto yy141;
1522            goto yy4;
1523        } else {
1524            if (yych <= 'a') goto yy1287;
1525            if (yych <= 'z') goto yy141;
1526            goto yy4;
1527        }
1528    }
1529yy20:
1530    YYDEBUG(20, *YYCURSOR);
1531    yych = *++YYCURSOR;
1532    if (yych <= 'U') {
1533        if (yych <= 'D') {
1534            if (yych <= ')') {
1535                if (yych <= '(') goto yy4;
1536                goto yy140;
1537            } else {
1538                if (yych <= '@') goto yy4;
1539                if (yych <= 'A') goto yy1230;
1540                goto yy141;
1541            }
1542        } else {
1543            if (yych <= 'H') {
1544                if (yych <= 'E') goto yy1229;
1545                goto yy141;
1546            } else {
1547                if (yych <= 'I') goto yy1231;
1548                if (yych <= 'T') goto yy141;
1549                goto yy1232;
1550            }
1551        }
1552    } else {
1553        if (yych <= 'e') {
1554            if (yych <= '`') {
1555                if (yych <= 'Z') goto yy141;
1556                goto yy4;
1557            } else {
1558                if (yych <= 'a') goto yy1259;
1559                if (yych <= 'd') goto yy146;
1560                goto yy1258;
1561            }
1562        } else {
1563            if (yych <= 't') {
1564                if (yych == 'i') goto yy1260;
1565                goto yy146;
1566            } else {
1567                if (yych <= 'u') goto yy1261;
1568                if (yych <= 'z') goto yy146;
1569                goto yy4;
1570            }
1571        }
1572    }
1573yy21:
1574    YYDEBUG(21, *YYCURSOR);
1575    yych = *++YYCURSOR;
1576    if (yych <= 'U') {
1577        if (yych <= 'D') {
1578            if (yych <= ')') {
1579                if (yych <= '(') goto yy4;
1580                goto yy140;
1581            } else {
1582                if (yych <= '@') goto yy4;
1583                if (yych <= 'A') goto yy1230;
1584                goto yy141;
1585            }
1586        } else {
1587            if (yych <= 'H') {
1588                if (yych <= 'E') goto yy1229;
1589                goto yy141;
1590            } else {
1591                if (yych <= 'I') goto yy1231;
1592                if (yych <= 'T') goto yy141;
1593                goto yy1232;
1594            }
1595        }
1596    } else {
1597        if (yych <= 'e') {
1598            if (yych <= '`') {
1599                if (yych <= 'Z') goto yy141;
1600                goto yy4;
1601            } else {
1602                if (yych <= 'a') goto yy1230;
1603                if (yych <= 'd') goto yy141;
1604                goto yy1229;
1605            }
1606        } else {
1607            if (yych <= 't') {
1608                if (yych == 'i') goto yy1231;
1609                goto yy141;
1610            } else {
1611                if (yych <= 'u') goto yy1232;
1612                if (yych <= 'z') goto yy141;
1613                goto yy4;
1614            }
1615        }
1616    }
1617yy22:
1618    YYDEBUG(22, *YYCURSOR);
1619    yych = *++YYCURSOR;
1620    if (yych <= 'L') {
1621        if (yych <= '@') {
1622            if (yych == ')') goto yy140;
1623            goto yy4;
1624        } else {
1625            if (yych == 'I') goto yy1199;
1626            if (yych <= 'K') goto yy141;
1627            goto yy1200;
1628        }
1629    } else {
1630        if (yych <= 'i') {
1631            if (yych <= 'Z') goto yy141;
1632            if (yych <= '`') goto yy4;
1633            if (yych <= 'h') goto yy146;
1634            goto yy1217;
1635        } else {
1636            if (yych == 'l') goto yy1218;
1637            if (yych <= 'z') goto yy146;
1638            goto yy4;
1639        }
1640    }
1641yy23:
1642    YYDEBUG(23, *YYCURSOR);
1643    yych = *++YYCURSOR;
1644    if (yych <= 'L') {
1645        if (yych <= '@') {
1646            if (yych == ')') goto yy140;
1647            goto yy4;
1648        } else {
1649            if (yych == 'I') goto yy1199;
1650            if (yych <= 'K') goto yy141;
1651            goto yy1200;
1652        }
1653    } else {
1654        if (yych <= 'i') {
1655            if (yych <= 'Z') goto yy141;
1656            if (yych <= '`') goto yy4;
1657            if (yych <= 'h') goto yy141;
1658            goto yy1199;
1659        } else {
1660            if (yych == 'l') goto yy1200;
1661            if (yych <= 'z') goto yy141;
1662            goto yy4;
1663        }
1664    }
1665yy24:
1666    YYDEBUG(24, *YYCURSOR);
1667    yych = *++YYCURSOR;
1668    if (yych <= 'R') {
1669        if (yych <= ')') {
1670            if (yych <= '(') goto yy4;
1671            goto yy140;
1672        } else {
1673            if (yych <= '@') goto yy4;
1674            if (yych <= 'Q') goto yy141;
1675            goto yy1098;
1676        }
1677    } else {
1678        if (yych <= 'q') {
1679            if (yych <= 'Z') goto yy141;
1680            if (yych <= '`') goto yy4;
1681            goto yy146;
1682        } else {
1683            if (yych <= 'r') goto yy1192;
1684            if (yych <= 'z') goto yy146;
1685            goto yy4;
1686        }
1687    }
1688yy25:
1689    YYDEBUG(25, *YYCURSOR);
1690    yych = *++YYCURSOR;
1691    if (yych <= 'R') {
1692        if (yych <= ')') {
1693            if (yych <= '(') goto yy4;
1694            goto yy140;
1695        } else {
1696            if (yych <= '@') goto yy4;
1697            if (yych <= 'Q') goto yy141;
1698            goto yy1098;
1699        }
1700    } else {
1701        if (yych <= 'q') {
1702            if (yych <= 'Z') goto yy141;
1703            if (yych <= '`') goto yy4;
1704            goto yy141;
1705        } else {
1706            if (yych <= 'r') goto yy1098;
1707            if (yych <= 'z') goto yy141;
1708            goto yy4;
1709        }
1710    }
1711yy26:
1712    YYDEBUG(26, *YYCURSOR);
1713    yyaccept = 1;
1714    yych = *(YYMARKER = ++YYCURSOR);
1715    YYDEBUG(-1, yych);
1716    switch (yych) {
1717    case '\t':  goto yy1052;
1718    case ' ':
1719    case 'A':
1720    case 'D':
1721    case 'F':
1722    case 'H':
1723    case 'I':
1724    case 'J':
1725    case 'M':
1726    case 'N':
1727    case 'O':
1728    case 'S':
1729    case 'T':
1730    case 'V':
1731    case 'W':
1732    case 'X':
1733    case 'Y':
1734    case 'a':
1735    case 'd':
1736    case 'f':
1737    case 'h':
1738    case 'j':
1739    case 'm':
1740    case 'o':
1741    case 'w':
1742    case 'y':   goto yy1054;
1743    case '-':   goto yy473;
1744    case '.':   goto yy1064;
1745    case '/':   goto yy472;
1746    case '0':   goto yy1097;
1747    case '1':
1748    case '2':
1749    case '3':
1750    case '4':
1751    case '5':
1752    case '6':
1753    case '7':
1754    case '8':
1755    case '9':   goto yy1096;
1756    case ':':   goto yy1065;
1757    case 'n':   goto yy470;
1758    case 'r':   goto yy471;
1759    case 's':   goto yy464;
1760    case 't':   goto yy468;
1761    default:    goto yy13;
1762    }
1763yy27:
1764    YYDEBUG(27, *YYCURSOR);
1765    yyaccept = 1;
1766    yych = *(YYMARKER = ++YYCURSOR);
1767    YYDEBUG(-1, yych);
1768    switch (yych) {
1769    case '\t':  goto yy460;
1770    case ' ':
1771    case 'A':
1772    case 'D':
1773    case 'F':
1774    case 'H':
1775    case 'I':
1776    case 'J':
1777    case 'M':
1778    case 'N':
1779    case 'O':
1780    case 'P':
1781    case 'S':
1782    case 'T':
1783    case 'V':
1784    case 'W':
1785    case 'X':
1786    case 'Y':
1787    case 'a':
1788    case 'd':
1789    case 'f':
1790    case 'h':
1791    case 'j':
1792    case 'm':
1793    case 'o':
1794    case 'p':
1795    case 'w':
1796    case 'y':   goto yy462;
1797    case '-':   goto yy473;
1798    case '.':   goto yy474;
1799    case '/':   goto yy472;
1800    case '0':
1801    case '1':
1802    case '2':   goto yy1096;
1803    case '3':
1804    case '4':
1805    case '5':
1806    case '6':
1807    case '7':
1808    case '8':
1809    case '9':   goto yy1063;
1810    case ':':   goto yy483;
1811    case 'n':   goto yy470;
1812    case 'r':   goto yy471;
1813    case 's':   goto yy464;
1814    case 't':   goto yy468;
1815    default:    goto yy13;
1816    }
1817yy28:
1818    YYDEBUG(28, *YYCURSOR);
1819    yyaccept = 1;
1820    yych = *(YYMARKER = ++YYCURSOR);
1821    YYDEBUG(-1, yych);
1822    switch (yych) {
1823    case '\t':  goto yy460;
1824    case ' ':
1825    case 'A':
1826    case 'D':
1827    case 'F':
1828    case 'H':
1829    case 'I':
1830    case 'J':
1831    case 'M':
1832    case 'N':
1833    case 'O':
1834    case 'P':
1835    case 'S':
1836    case 'T':
1837    case 'V':
1838    case 'W':
1839    case 'X':
1840    case 'Y':
1841    case 'a':
1842    case 'd':
1843    case 'f':
1844    case 'h':
1845    case 'j':
1846    case 'm':
1847    case 'o':
1848    case 'p':
1849    case 'w':
1850    case 'y':   goto yy462;
1851    case '-':   goto yy473;
1852    case '.':   goto yy474;
1853    case '/':   goto yy472;
1854    case '0':
1855    case '1':
1856    case '2':
1857    case '3':
1858    case '4':   goto yy1063;
1859    case '5':
1860    case '6':
1861    case '7':
1862    case '8':
1863    case '9':   goto yy1050;
1864    case ':':   goto yy483;
1865    case 'n':   goto yy470;
1866    case 'r':   goto yy471;
1867    case 's':   goto yy464;
1868    case 't':   goto yy468;
1869    default:    goto yy13;
1870    }
1871yy29:
1872    YYDEBUG(29, *YYCURSOR);
1873    yyaccept = 1;
1874    yych = *(YYMARKER = ++YYCURSOR);
1875    YYDEBUG(-1, yych);
1876    switch (yych) {
1877    case '\t':  goto yy460;
1878    case ' ':
1879    case 'A':
1880    case 'D':
1881    case 'F':
1882    case 'H':
1883    case 'I':
1884    case 'J':
1885    case 'M':
1886    case 'N':
1887    case 'O':
1888    case 'P':
1889    case 'S':
1890    case 'T':
1891    case 'V':
1892    case 'W':
1893    case 'X':
1894    case 'Y':
1895    case 'a':
1896    case 'd':
1897    case 'f':
1898    case 'h':
1899    case 'j':
1900    case 'm':
1901    case 'o':
1902    case 'p':
1903    case 'w':
1904    case 'y':   goto yy462;
1905    case '-':   goto yy473;
1906    case '.':   goto yy474;
1907    case '/':   goto yy472;
1908    case '0':
1909    case '1':   goto yy1050;
1910    case '2':
1911    case '3':
1912    case '4':
1913    case '5':
1914    case '6':
1915    case '7':
1916    case '8':
1917    case '9':   goto yy469;
1918    case ':':   goto yy483;
1919    case 'n':   goto yy470;
1920    case 'r':   goto yy471;
1921    case 's':   goto yy464;
1922    case 't':   goto yy468;
1923    default:    goto yy13;
1924    }
1925yy30:
1926    YYDEBUG(30, *YYCURSOR);
1927    yyaccept = 1;
1928    yych = *(YYMARKER = ++YYCURSOR);
1929    YYDEBUG(-1, yych);
1930    switch (yych) {
1931    case '\t':  goto yy460;
1932    case ' ':
1933    case 'A':
1934    case 'D':
1935    case 'F':
1936    case 'H':
1937    case 'I':
1938    case 'J':
1939    case 'M':
1940    case 'N':
1941    case 'O':
1942    case 'P':
1943    case 'S':
1944    case 'T':
1945    case 'V':
1946    case 'W':
1947    case 'X':
1948    case 'Y':
1949    case 'a':
1950    case 'd':
1951    case 'f':
1952    case 'h':
1953    case 'j':
1954    case 'm':
1955    case 'o':
1956    case 'p':
1957    case 'w':
1958    case 'y':   goto yy462;
1959    case '-':   goto yy473;
1960    case '.':   goto yy474;
1961    case '/':   goto yy472;
1962    case '0':
1963    case '1':
1964    case '2':
1965    case '3':
1966    case '4':
1967    case '5':
1968    case '6':
1969    case '7':
1970    case '8':
1971    case '9':   goto yy469;
1972    case ':':   goto yy483;
1973    case 'n':   goto yy470;
1974    case 'r':   goto yy471;
1975    case 's':   goto yy464;
1976    case 't':   goto yy468;
1977    default:    goto yy13;
1978    }
1979yy31:
1980    YYDEBUG(31, *YYCURSOR);
1981    yyaccept = 1;
1982    yych = *(YYMARKER = ++YYCURSOR);
1983    if (yybm[0+yych] & 4) {
1984        goto yy58;
1985    }
1986    YYDEBUG(-1, yych);
1987    switch (yych) {
1988    case '+':
1989    case '-':   goto yy440;
1990    case '0':
1991    case '1':   goto yy437;
1992    case '2':   goto yy438;
1993    case '3':
1994    case '4':
1995    case '5':
1996    case '6':
1997    case '7':
1998    case '8':
1999    case '9':   goto yy439;
2000    default:    goto yy13;
2001    }
2002yy32:
2003    YYDEBUG(32, *YYCURSOR);
2004    yyaccept = 0;
2005    yych = *(YYMARKER = ++YYCURSOR);
2006    if (yych <= '9') {
2007        if (yych <= '(') {
2008            if (yych <= '\t') {
2009                if (yych <= 0x08) goto yy4;
2010                goto yy196;
2011            } else {
2012                if (yych == ' ') goto yy196;
2013                goto yy4;
2014            }
2015        } else {
2016            if (yych <= ',') {
2017                if (yych <= ')') goto yy140;
2018                goto yy4;
2019            } else {
2020                if (yych == '/') goto yy4;
2021                goto yy196;
2022            }
2023        }
2024    } else {
2025        if (yych <= 'V') {
2026            if (yych <= 'H') {
2027                if (yych <= '@') goto yy4;
2028                goto yy141;
2029            } else {
2030                if (yych <= 'I') goto yy436;
2031                if (yych <= 'U') goto yy141;
2032                goto yy435;
2033            }
2034        } else {
2035            if (yych <= 'Z') {
2036                if (yych == 'X') goto yy435;
2037                goto yy141;
2038            } else {
2039                if (yych <= '`') goto yy4;
2040                if (yych <= 'z') goto yy146;
2041                goto yy4;
2042            }
2043        }
2044    }
2045yy33:
2046    YYDEBUG(33, *YYCURSOR);
2047    yyaccept = 0;
2048    yych = *(YYMARKER = ++YYCURSOR);
2049    if (yych <= '.') {
2050        if (yych <= ' ') {
2051            if (yych == '\t') goto yy196;
2052            if (yych <= 0x1F) goto yy4;
2053            goto yy196;
2054        } else {
2055            if (yych == ')') goto yy140;
2056            if (yych <= ',') goto yy4;
2057            goto yy196;
2058        }
2059    } else {
2060        if (yych <= 'H') {
2061            if (yych <= '/') goto yy4;
2062            if (yych <= '9') goto yy196;
2063            if (yych <= '@') goto yy4;
2064            goto yy141;
2065        } else {
2066            if (yych <= 'Z') {
2067                if (yych <= 'I') goto yy432;
2068                goto yy141;
2069            } else {
2070                if (yych <= '`') goto yy4;
2071                if (yych <= 'z') goto yy146;
2072                goto yy4;
2073            }
2074        }
2075    }
2076yy34:
2077    YYDEBUG(34, *YYCURSOR);
2078    yyaccept = 0;
2079    yych = *(YYMARKER = ++YYCURSOR);
2080    if (yych <= '.') {
2081        if (yych <= ' ') {
2082            if (yych == '\t') goto yy196;
2083            if (yych <= 0x1F) goto yy4;
2084            goto yy196;
2085        } else {
2086            if (yych == ')') goto yy140;
2087            if (yych <= ',') goto yy4;
2088            goto yy196;
2089        }
2090    } else {
2091        if (yych <= 'H') {
2092            if (yych <= '/') goto yy4;
2093            if (yych <= '9') goto yy196;
2094            if (yych <= '@') goto yy4;
2095            goto yy141;
2096        } else {
2097            if (yych <= 'Z') {
2098                if (yych <= 'I') goto yy430;
2099                goto yy141;
2100            } else {
2101                if (yych <= '`') goto yy4;
2102                if (yych <= 'z') goto yy146;
2103                goto yy4;
2104            }
2105        }
2106    }
2107yy35:
2108    YYDEBUG(35, *YYCURSOR);
2109    yych = *++YYCURSOR;
2110    if (yych <= 'U') {
2111        if (yych <= '@') {
2112            if (yych == ')') goto yy140;
2113            goto yy4;
2114        } else {
2115            if (yych <= 'A') goto yy413;
2116            if (yych <= 'T') goto yy141;
2117            goto yy412;
2118        }
2119    } else {
2120        if (yych <= 'a') {
2121            if (yych <= 'Z') goto yy141;
2122            if (yych <= '`') goto yy4;
2123            goto yy422;
2124        } else {
2125            if (yych == 'u') goto yy421;
2126            if (yych <= 'z') goto yy146;
2127            goto yy4;
2128        }
2129    }
2130yy36:
2131    YYDEBUG(36, *YYCURSOR);
2132    yych = *++YYCURSOR;
2133    if (yych <= 'U') {
2134        if (yych <= '@') {
2135            if (yych == ')') goto yy140;
2136            goto yy4;
2137        } else {
2138            if (yych <= 'A') goto yy413;
2139            if (yych <= 'T') goto yy141;
2140            goto yy412;
2141        }
2142    } else {
2143        if (yych <= 'a') {
2144            if (yych <= 'Z') goto yy141;
2145            if (yych <= '`') goto yy4;
2146            goto yy413;
2147        } else {
2148            if (yych == 'u') goto yy412;
2149            if (yych <= 'z') goto yy141;
2150            goto yy4;
2151        }
2152    }
2153yy37:
2154    YYDEBUG(37, *YYCURSOR);
2155    yych = *++YYCURSOR;
2156    if (yych <= 'U') {
2157        if (yych <= 'F') {
2158            if (yych == ')') goto yy140;
2159            if (yych <= '@') goto yy4;
2160            goto yy141;
2161        } else {
2162            if (yych <= 'O') {
2163                if (yych <= 'G') goto yy391;
2164                goto yy141;
2165            } else {
2166                if (yych <= 'P') goto yy390;
2167                if (yych <= 'T') goto yy141;
2168                goto yy389;
2169            }
2170        }
2171    } else {
2172        if (yych <= 'o') {
2173            if (yych <= '`') {
2174                if (yych <= 'Z') goto yy141;
2175                goto yy4;
2176            } else {
2177                if (yych == 'g') goto yy403;
2178                goto yy146;
2179            }
2180        } else {
2181            if (yych <= 't') {
2182                if (yych <= 'p') goto yy402;
2183                goto yy146;
2184            } else {
2185                if (yych <= 'u') goto yy401;
2186                if (yych <= 'z') goto yy146;
2187                goto yy4;
2188            }
2189        }
2190    }
2191yy38:
2192    YYDEBUG(38, *YYCURSOR);
2193    yych = *++YYCURSOR;
2194    if (yych <= 'U') {
2195        if (yych <= 'F') {
2196            if (yych == ')') goto yy140;
2197            if (yych <= '@') goto yy4;
2198            goto yy141;
2199        } else {
2200            if (yych <= 'O') {
2201                if (yych <= 'G') goto yy391;
2202                goto yy141;
2203            } else {
2204                if (yych <= 'P') goto yy390;
2205                if (yych <= 'T') goto yy141;
2206                goto yy389;
2207            }
2208        }
2209    } else {
2210        if (yych <= 'o') {
2211            if (yych <= '`') {
2212                if (yych <= 'Z') goto yy141;
2213                goto yy4;
2214            } else {
2215                if (yych == 'g') goto yy391;
2216                goto yy141;
2217            }
2218        } else {
2219            if (yych <= 't') {
2220                if (yych <= 'p') goto yy390;
2221                goto yy141;
2222            } else {
2223                if (yych <= 'u') goto yy389;
2224                if (yych <= 'z') goto yy141;
2225                goto yy4;
2226            }
2227        }
2228    }
2229yy39:
2230    YYDEBUG(39, *YYCURSOR);
2231    yych = *++YYCURSOR;
2232    if (yych <= 'C') {
2233        if (yych <= ')') {
2234            if (yych <= '(') goto yy4;
2235            goto yy140;
2236        } else {
2237            if (yych <= '@') goto yy4;
2238            if (yych <= 'B') goto yy141;
2239            goto yy379;
2240        }
2241    } else {
2242        if (yych <= 'b') {
2243            if (yych <= 'Z') goto yy141;
2244            if (yych <= '`') goto yy4;
2245            goto yy146;
2246        } else {
2247            if (yych <= 'c') goto yy384;
2248            if (yych <= 'z') goto yy146;
2249            goto yy4;
2250        }
2251    }
2252yy40:
2253    YYDEBUG(40, *YYCURSOR);
2254    yych = *++YYCURSOR;
2255    if (yych <= 'C') {
2256        if (yych <= ')') {
2257            if (yych <= '(') goto yy4;
2258            goto yy140;
2259        } else {
2260            if (yych <= '@') goto yy4;
2261            if (yych <= 'B') goto yy141;
2262            goto yy379;
2263        }
2264    } else {
2265        if (yych <= 'b') {
2266            if (yych <= 'Z') goto yy141;
2267            if (yych <= '`') goto yy4;
2268            goto yy141;
2269        } else {
2270            if (yych <= 'c') goto yy379;
2271            if (yych <= 'z') goto yy141;
2272            goto yy4;
2273        }
2274    }
2275yy41:
2276    YYDEBUG(41, *YYCURSOR);
2277    yych = *++YYCURSOR;
2278    if (yych <= 'E') {
2279        if (yych <= ')') {
2280            if (yych <= '(') goto yy4;
2281            goto yy140;
2282        } else {
2283            if (yych <= '@') goto yy4;
2284            if (yych <= 'D') goto yy141;
2285            goto yy192;
2286        }
2287    } else {
2288        if (yych <= 'd') {
2289            if (yych <= 'Z') goto yy141;
2290            if (yych <= '`') goto yy4;
2291            goto yy146;
2292        } else {
2293            if (yych <= 'e') goto yy370;
2294            if (yych <= 'z') goto yy146;
2295            goto yy4;
2296        }
2297    }
2298yy42:
2299    YYDEBUG(42, *YYCURSOR);
2300    yych = *++YYCURSOR;
2301    if (yych <= 'E') {
2302        if (yych <= ')') {
2303            if (yych <= '(') goto yy4;
2304            goto yy140;
2305        } else {
2306            if (yych <= '@') goto yy4;
2307            if (yych <= 'D') goto yy141;
2308            goto yy192;
2309        }
2310    } else {
2311        if (yych <= 'd') {
2312            if (yych <= 'Z') goto yy141;
2313            if (yych <= '`') goto yy4;
2314            goto yy141;
2315        } else {
2316            if (yych <= 'e') goto yy192;
2317            if (yych <= 'z') goto yy141;
2318            goto yy4;
2319        }
2320    }
2321yy43:
2322    YYDEBUG(43, *YYCURSOR);
2323    yych = *++YYCURSOR;
2324    if (yych <= 'E') {
2325        if (yych <= ')') {
2326            if (yych <= '(') goto yy4;
2327            goto yy140;
2328        } else {
2329            if (yych <= '@') goto yy4;
2330            if (yych <= 'D') goto yy141;
2331            goto yy165;
2332        }
2333    } else {
2334        if (yych <= 'd') {
2335            if (yych <= 'Z') goto yy141;
2336            if (yych <= '`') goto yy4;
2337            goto yy146;
2338        } else {
2339            if (yych <= 'e') goto yy179;
2340            if (yych <= 'z') goto yy146;
2341            goto yy4;
2342        }
2343    }
2344yy44:
2345    YYDEBUG(44, *YYCURSOR);
2346    yych = *++YYCURSOR;
2347    if (yych <= 'E') {
2348        if (yych <= ')') {
2349            if (yych <= '(') goto yy4;
2350            goto yy140;
2351        } else {
2352            if (yych <= '@') goto yy4;
2353            if (yych <= 'D') goto yy141;
2354            goto yy165;
2355        }
2356    } else {
2357        if (yych <= 'd') {
2358            if (yych <= 'Z') goto yy141;
2359            if (yych <= '`') goto yy4;
2360            goto yy141;
2361        } else {
2362            if (yych <= 'e') goto yy165;
2363            if (yych <= 'z') goto yy141;
2364            goto yy4;
2365        }
2366    }
2367yy45:
2368    YYDEBUG(45, *YYCURSOR);
2369    yych = *++YYCURSOR;
2370    if (yych <= 'L') {
2371        if (yych == ')') goto yy140;
2372        if (yych <= '@') goto yy4;
2373        goto yy141;
2374    } else {
2375        if (yych <= 'Z') {
2376            if (yych <= 'M') goto yy157;
2377            goto yy141;
2378        } else {
2379            if (yych <= '`') goto yy4;
2380            if (yych <= 'z') goto yy146;
2381            goto yy4;
2382        }
2383    }
2384yy46:
2385    YYDEBUG(46, *YYCURSOR);
2386    yych = *++YYCURSOR;
2387    if (yych <= '@') goto yy13;
2388    if (yych <= 'Z') goto yy156;
2389    if (yych <= '`') goto yy13;
2390    if (yych <= 'z') goto yy156;
2391    goto yy13;
2392yy47:
2393    YYDEBUG(47, *YYCURSOR);
2394    yych = *++YYCURSOR;
2395    if (yych <= '@') {
2396        if (yych == ')') goto yy140;
2397        goto yy4;
2398    } else {
2399        if (yych <= 'Z') goto yy141;
2400        if (yych <= '`') goto yy4;
2401        if (yych <= 'z') goto yy146;
2402        goto yy4;
2403    }
2404yy48:
2405    YYDEBUG(48, *YYCURSOR);
2406    yych = *++YYCURSOR;
2407    if (yych <= '@') {
2408        if (yych == ')') goto yy140;
2409        goto yy4;
2410    } else {
2411        if (yych <= 'Z') goto yy141;
2412        if (yych <= '`') goto yy4;
2413        if (yych <= 'z') goto yy141;
2414        goto yy4;
2415    }
2416yy49:
2417    YYDEBUG(49, *YYCURSOR);
2418    yyaccept = 2;
2419    yych = *(YYMARKER = ++YYCURSOR);
2420    if (yybm[0+yych] & 4) {
2421        goto yy58;
2422    }
2423    if (yych <= '/') goto yy50;
2424    if (yych <= '9') goto yy55;
2425yy50:
2426    YYDEBUG(50, *YYCURSOR);
2427#line 1765 "ext/date/lib/parse_date.re"
2428    {
2429        goto std;
2430    }
2431#line 2432 "ext/date/lib/parse_date.c"
2432yy51:
2433    YYDEBUG(51, *YYCURSOR);
2434    yych = *++YYCURSOR;
2435    goto yy50;
2436yy52:
2437    YYDEBUG(52, *YYCURSOR);
2438    ++YYCURSOR;
2439    YYDEBUG(53, *YYCURSOR);
2440#line 1770 "ext/date/lib/parse_date.re"
2441    {
2442        s->pos = cursor; s->line++;
2443        goto std;
2444    }
2445#line 2446 "ext/date/lib/parse_date.c"
2446yy54:
2447    YYDEBUG(54, *YYCURSOR);
2448    yych = *++YYCURSOR;
2449    goto yy13;
2450yy55:
2451    YYDEBUG(55, *YYCURSOR);
2452    ++YYCURSOR;
2453    if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
2454    yych = *YYCURSOR;
2455    YYDEBUG(56, *YYCURSOR);
2456    if (yybm[0+yych] & 2) {
2457        goto yy55;
2458    }
2459    if (yych <= 'W') {
2460        if (yych <= 'F') {
2461            if (yych <= ' ') {
2462                if (yych == '\t') goto yy60;
2463                if (yych >= ' ') goto yy60;
2464            } else {
2465                if (yych == 'D') goto yy65;
2466                if (yych >= 'F') goto yy66;
2467            }
2468        } else {
2469            if (yych <= 'M') {
2470                if (yych == 'H') goto yy64;
2471                if (yych >= 'M') goto yy63;
2472            } else {
2473                if (yych <= 'S') {
2474                    if (yych >= 'S') goto yy62;
2475                } else {
2476                    if (yych <= 'T') goto yy69;
2477                    if (yych >= 'W') goto yy68;
2478                }
2479            }
2480        }
2481    } else {
2482        if (yych <= 'l') {
2483            if (yych <= 'd') {
2484                if (yych == 'Y') goto yy67;
2485                if (yych >= 'd') goto yy65;
2486            } else {
2487                if (yych <= 'f') {
2488                    if (yych >= 'f') goto yy66;
2489                } else {
2490                    if (yych == 'h') goto yy64;
2491                }
2492            }
2493        } else {
2494            if (yych <= 't') {
2495                if (yych <= 'm') goto yy63;
2496                if (yych <= 'r') goto yy57;
2497                if (yych <= 's') goto yy62;
2498                goto yy69;
2499            } else {
2500                if (yych <= 'w') {
2501                    if (yych >= 'w') goto yy68;
2502                } else {
2503                    if (yych == 'y') goto yy67;
2504                }
2505            }
2506        }
2507    }
2508yy57:
2509    YYDEBUG(57, *YYCURSOR);
2510    YYCURSOR = YYMARKER;
2511    if (yyaccept <= 16) {
2512        if (yyaccept <= 8) {
2513            if (yyaccept <= 4) {
2514                if (yyaccept <= 2) {
2515                    if (yyaccept <= 1) {
2516                        if (yyaccept <= 0) {
2517                            goto yy4;
2518                        } else {
2519                            goto yy13;
2520                        }
2521                    } else {
2522                        goto yy50;
2523                    }
2524                } else {
2525                    if (yyaccept <= 3) {
2526                        goto yy73;
2527                    } else {
2528                        goto yy167;
2529                    }
2530                }
2531            } else {
2532                if (yyaccept <= 6) {
2533                    if (yyaccept <= 5) {
2534                        goto yy194;
2535                    } else {
2536                        goto yy199;
2537                    }
2538                } else {
2539                    if (yyaccept <= 7) {
2540                        goto yy223;
2541                    } else {
2542                        goto yy295;
2543                    }
2544                }
2545            }
2546        } else {
2547            if (yyaccept <= 12) {
2548                if (yyaccept <= 10) {
2549                    if (yyaccept <= 9) {
2550                        goto yy393;
2551                    } else {
2552                        goto yy476;
2553                    }
2554                } else {
2555                    if (yyaccept <= 11) {
2556                        goto yy491;
2557                    } else {
2558                        goto yy612;
2559                    }
2560                }
2561            } else {
2562                if (yyaccept <= 14) {
2563                    if (yyaccept <= 13) {
2564                        goto yy657;
2565                    } else {
2566                        goto yy667;
2567                    }
2568                } else {
2569                    if (yyaccept <= 15) {
2570                        goto yy764;
2571                    } else {
2572                        goto yy784;
2573                    }
2574                }
2575            }
2576        }
2577    } else {
2578        if (yyaccept <= 25) {
2579            if (yyaccept <= 21) {
2580                if (yyaccept <= 19) {
2581                    if (yyaccept <= 18) {
2582                        if (yyaccept <= 17) {
2583                            goto yy815;
2584                        } else {
2585                            goto yy822;
2586                        }
2587                    } else {
2588                        goto yy849;
2589                    }
2590                } else {
2591                    if (yyaccept <= 20) {
2592                        goto yy794;
2593                    } else {
2594                        goto yy455;
2595                    }
2596                }
2597            } else {
2598                if (yyaccept <= 23) {
2599                    if (yyaccept <= 22) {
2600                        goto yy974;
2601                    } else {
2602                        goto yy843;
2603                    }
2604                } else {
2605                    if (yyaccept <= 24) {
2606                        goto yy1068;
2607                    } else {
2608                        goto yy1076;
2609                    }
2610                }
2611            }
2612        } else {
2613            if (yyaccept <= 29) {
2614                if (yyaccept <= 27) {
2615                    if (yyaccept <= 26) {
2616                        goto yy1118;
2617                    } else {
2618                        goto yy1142;
2619                    }
2620                } else {
2621                    if (yyaccept <= 28) {
2622                        goto yy1295;
2623                    } else {
2624                        goto yy1417;
2625                    }
2626                }
2627            } else {
2628                if (yyaccept <= 31) {
2629                    if (yyaccept <= 30) {
2630                        goto yy1420;
2631                    } else {
2632                        goto yy1500;
2633                    }
2634                } else {
2635                    if (yyaccept <= 32) {
2636                        goto yy1508;
2637                    } else {
2638                        goto yy1531;
2639                    }
2640                }
2641            }
2642        }
2643    }
2644yy58:
2645    YYDEBUG(58, *YYCURSOR);
2646    ++YYCURSOR;
2647    if (YYLIMIT <= YYCURSOR) YYFILL(1);
2648    yych = *YYCURSOR;
2649    YYDEBUG(59, *YYCURSOR);
2650    if (yybm[0+yych] & 4) {
2651        goto yy58;
2652    }
2653    if (yych <= '/') goto yy57;
2654    if (yych <= '9') goto yy55;
2655    goto yy57;
2656yy60:
2657    YYDEBUG(60, *YYCURSOR);
2658    ++YYCURSOR;
2659    if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
2660    yych = *YYCURSOR;
2661yy61:
2662    YYDEBUG(61, *YYCURSOR);
2663    if (yych <= 'W') {
2664        if (yych <= 'F') {
2665            if (yych <= ' ') {
2666                if (yych == '\t') goto yy60;
2667                if (yych <= 0x1F) goto yy57;
2668                goto yy60;
2669            } else {
2670                if (yych == 'D') goto yy65;
2671                if (yych <= 'E') goto yy57;
2672                goto yy66;
2673            }
2674        } else {
2675            if (yych <= 'M') {
2676                if (yych == 'H') goto yy64;
2677                if (yych <= 'L') goto yy57;
2678                goto yy63;
2679            } else {
2680                if (yych <= 'S') {
2681                    if (yych <= 'R') goto yy57;
2682                } else {
2683                    if (yych <= 'T') goto yy69;
2684                    if (yych <= 'V') goto yy57;
2685                    goto yy68;
2686                }
2687            }
2688        }
2689    } else {
2690        if (yych <= 'l') {
2691            if (yych <= 'd') {
2692                if (yych == 'Y') goto yy67;
2693                if (yych <= 'c') goto yy57;
2694                goto yy65;
2695            } else {
2696                if (yych <= 'f') {
2697                    if (yych <= 'e') goto yy57;
2698                    goto yy66;
2699                } else {
2700                    if (yych == 'h') goto yy64;
2701                    goto yy57;
2702                }
2703            }
2704        } else {
2705            if (yych <= 't') {
2706                if (yych <= 'm') goto yy63;
2707                if (yych <= 'r') goto yy57;
2708                if (yych >= 't') goto yy69;
2709            } else {
2710                if (yych <= 'w') {
2711                    if (yych <= 'v') goto yy57;
2712                    goto yy68;
2713                } else {
2714                    if (yych == 'y') goto yy67;
2715                    goto yy57;
2716                }
2717            }
2718        }
2719    }
2720yy62:
2721    YYDEBUG(62, *YYCURSOR);
2722    yych = *++YYCURSOR;
2723    if (yych <= 'U') {
2724        if (yych <= 'D') {
2725            if (yych == 'A') goto yy127;
2726            goto yy57;
2727        } else {
2728            if (yych <= 'E') goto yy128;
2729            if (yych <= 'T') goto yy57;
2730            goto yy126;
2731        }
2732    } else {
2733        if (yych <= 'd') {
2734            if (yych == 'a') goto yy127;
2735            goto yy57;
2736        } else {
2737            if (yych <= 'e') goto yy128;
2738            if (yych == 'u') goto yy126;
2739            goto yy57;
2740        }
2741    }
2742yy63:
2743    YYDEBUG(63, *YYCURSOR);
2744    yych = *++YYCURSOR;
2745    if (yych <= 'O') {
2746        if (yych == 'I') goto yy118;
2747        if (yych <= 'N') goto yy57;
2748        goto yy117;
2749    } else {
2750        if (yych <= 'i') {
2751            if (yych <= 'h') goto yy57;
2752            goto yy118;
2753        } else {
2754            if (yych == 'o') goto yy117;
2755            goto yy57;
2756        }
2757    }
2758yy64:
2759    YYDEBUG(64, *YYCURSOR);
2760    yych = *++YYCURSOR;
2761    if (yych == 'O') goto yy115;
2762    if (yych == 'o') goto yy115;
2763    goto yy57;
2764yy65:
2765    YYDEBUG(65, *YYCURSOR);
2766    yych = *++YYCURSOR;
2767    if (yych == 'A') goto yy114;
2768    if (yych == 'a') goto yy114;
2769    goto yy57;
2770yy66:
2771    YYDEBUG(66, *YYCURSOR);
2772    yych = *++YYCURSOR;
2773    if (yych <= 'R') {
2774        if (yych == 'O') goto yy99;
2775        if (yych <= 'Q') goto yy57;
2776        goto yy98;
2777    } else {
2778        if (yych <= 'o') {
2779            if (yych <= 'n') goto yy57;
2780            goto yy99;
2781        } else {
2782            if (yych == 'r') goto yy98;
2783            goto yy57;
2784        }
2785    }
2786yy67:
2787    YYDEBUG(67, *YYCURSOR);
2788    yych = *++YYCURSOR;
2789    if (yych == 'E') goto yy95;
2790    if (yych == 'e') goto yy95;
2791    goto yy57;
2792yy68:
2793    YYDEBUG(68, *YYCURSOR);
2794    yych = *++YYCURSOR;
2795    if (yych == 'E') goto yy83;
2796    if (yych == 'e') goto yy83;
2797    goto yy57;
2798yy69:
2799    YYDEBUG(69, *YYCURSOR);
2800    yych = *++YYCURSOR;
2801    if (yych <= 'U') {
2802        if (yych == 'H') goto yy70;
2803        if (yych <= 'T') goto yy57;
2804        goto yy71;
2805    } else {
2806        if (yych <= 'h') {
2807            if (yych <= 'g') goto yy57;
2808        } else {
2809            if (yych == 'u') goto yy71;
2810            goto yy57;
2811        }
2812    }
2813yy70:
2814    YYDEBUG(70, *YYCURSOR);
2815    yych = *++YYCURSOR;
2816    if (yych == 'U') goto yy78;
2817    if (yych == 'u') goto yy78;
2818    goto yy57;
2819yy71:
2820    YYDEBUG(71, *YYCURSOR);
2821    yych = *++YYCURSOR;
2822    if (yych == 'E') goto yy72;
2823    if (yych != 'e') goto yy57;
2824yy72:
2825    YYDEBUG(72, *YYCURSOR);
2826    yyaccept = 3;
2827    yych = *(YYMARKER = ++YYCURSOR);
2828    if (yych == 'S') goto yy74;
2829    if (yych == 's') goto yy74;
2830yy73:
2831    YYDEBUG(73, *YYCURSOR);
2832#line 1749 "ext/date/lib/parse_date.re"
2833    {
2834        timelib_ull i;
2835        DEBUG_OUTPUT("relative");
2836        TIMELIB_INIT;
2837        TIMELIB_HAVE_RELATIVE();
2838
2839        while(*ptr) {
2840            i = timelib_get_unsigned_nr((char **) &ptr, 24);
2841            timelib_eat_spaces((char **) &ptr);
2842            timelib_set_relative((char **) &ptr, i, 1, s);
2843        }
2844        TIMELIB_DEINIT;
2845        return TIMELIB_RELATIVE;
2846    }
2847#line 2848 "ext/date/lib/parse_date.c"
2848yy74:
2849    YYDEBUG(74, *YYCURSOR);
2850    yych = *++YYCURSOR;
2851    if (yych == 'D') goto yy75;
2852    if (yych != 'd') goto yy57;
2853yy75:
2854    YYDEBUG(75, *YYCURSOR);
2855    yych = *++YYCURSOR;
2856    if (yych == 'A') goto yy76;
2857    if (yych != 'a') goto yy57;
2858yy76:
2859    YYDEBUG(76, *YYCURSOR);
2860    yych = *++YYCURSOR;
2861    if (yych == 'Y') goto yy77;
2862    if (yych != 'y') goto yy57;
2863yy77:
2864    YYDEBUG(77, *YYCURSOR);
2865    yych = *++YYCURSOR;
2866    goto yy73;
2867yy78:
2868    YYDEBUG(78, *YYCURSOR);
2869    yyaccept = 3;
2870    yych = *(YYMARKER = ++YYCURSOR);
2871    if (yych == 'R') goto yy79;
2872    if (yych != 'r') goto yy73;
2873yy79:
2874    YYDEBUG(79, *YYCURSOR);
2875    yych = *++YYCURSOR;
2876    if (yych == 'S') goto yy80;
2877    if (yych != 's') goto yy57;
2878yy80:
2879    YYDEBUG(80, *YYCURSOR);
2880    yych = *++YYCURSOR;
2881    if (yych == 'D') goto yy81;
2882    if (yych != 'd') goto yy57;
2883yy81:
2884    YYDEBUG(81, *YYCURSOR);
2885    yych = *++YYCURSOR;
2886    if (yych == 'A') goto yy82;
2887    if (yych != 'a') goto yy57;
2888yy82:
2889    YYDEBUG(82, *YYCURSOR);
2890    yych = *++YYCURSOR;
2891    if (yych == 'Y') goto yy77;
2892    if (yych == 'y') goto yy77;
2893    goto yy57;
2894yy83:
2895    YYDEBUG(83, *YYCURSOR);
2896    yych = *++YYCURSOR;
2897    if (yych <= 'E') {
2898        if (yych <= 'C') goto yy57;
2899        if (yych <= 'D') goto yy85;
2900    } else {
2901        if (yych <= 'c') goto yy57;
2902        if (yych <= 'd') goto yy85;
2903        if (yych >= 'f') goto yy57;
2904    }
2905    YYDEBUG(84, *YYCURSOR);
2906    yych = *++YYCURSOR;
2907    if (yych == 'K') goto yy91;
2908    if (yych == 'k') goto yy91;
2909    goto yy57;
2910yy85:
2911    YYDEBUG(85, *YYCURSOR);
2912    yyaccept = 3;
2913    yych = *(YYMARKER = ++YYCURSOR);
2914    if (yych == 'N') goto yy86;
2915    if (yych != 'n') goto yy73;
2916yy86:
2917    YYDEBUG(86, *YYCURSOR);
2918    yych = *++YYCURSOR;
2919    if (yych == 'E') goto yy87;
2920    if (yych != 'e') goto yy57;
2921yy87:
2922    YYDEBUG(87, *YYCURSOR);
2923    yych = *++YYCURSOR;
2924    if (yych == 'S') goto yy88;
2925    if (yych != 's') goto yy57;
2926yy88:
2927    YYDEBUG(88, *YYCURSOR);
2928    yych = *++YYCURSOR;
2929    if (yych == 'D') goto yy89;
2930    if (yych != 'd') goto yy57;
2931yy89:
2932    YYDEBUG(89, *YYCURSOR);
2933    yych = *++YYCURSOR;
2934    if (yych == 'A') goto yy90;
2935    if (yych != 'a') goto yy57;
2936yy90:
2937    YYDEBUG(90, *YYCURSOR);
2938    yych = *++YYCURSOR;
2939    if (yych == 'Y') goto yy77;
2940    if (yych == 'y') goto yy77;
2941    goto yy57;
2942yy91:
2943    YYDEBUG(91, *YYCURSOR);
2944    yyaccept = 3;
2945    yych = *(YYMARKER = ++YYCURSOR);
2946    if (yych <= 'S') {
2947        if (yych == 'D') goto yy92;
2948        if (yych <= 'R') goto yy73;
2949        goto yy77;
2950    } else {
2951        if (yych <= 'd') {
2952            if (yych <= 'c') goto yy73;
2953        } else {
2954            if (yych == 's') goto yy77;
2955            goto yy73;
2956        }
2957    }
2958yy92:
2959    YYDEBUG(92, *YYCURSOR);
2960    yych = *++YYCURSOR;
2961    if (yych == 'A') goto yy93;
2962    if (yych != 'a') goto yy57;
2963yy93:
2964    YYDEBUG(93, *YYCURSOR);
2965    yych = *++YYCURSOR;
2966    if (yych == 'Y') goto yy94;
2967    if (yych != 'y') goto yy57;
2968yy94:
2969    YYDEBUG(94, *YYCURSOR);
2970    yych = *++YYCURSOR;
2971    if (yych == 'S') goto yy77;
2972    if (yych == 's') goto yy77;
2973    goto yy73;
2974yy95:
2975    YYDEBUG(95, *YYCURSOR);
2976    yych = *++YYCURSOR;
2977    if (yych == 'A') goto yy96;
2978    if (yych != 'a') goto yy57;
2979yy96:
2980    YYDEBUG(96, *YYCURSOR);
2981    yych = *++YYCURSOR;
2982    if (yych == 'R') goto yy97;
2983    if (yych != 'r') goto yy57;
2984yy97:
2985    YYDEBUG(97, *YYCURSOR);
2986    yych = *++YYCURSOR;
2987    if (yych == 'S') goto yy77;
2988    if (yych == 's') goto yy77;
2989    goto yy73;
2990yy98:
2991    YYDEBUG(98, *YYCURSOR);
2992    yych = *++YYCURSOR;
2993    if (yych == 'I') goto yy111;
2994    if (yych == 'i') goto yy111;
2995    goto yy57;
2996yy99:
2997    YYDEBUG(99, *YYCURSOR);
2998    yych = *++YYCURSOR;
2999    if (yych == 'R') goto yy100;
3000    if (yych != 'r') goto yy57;
3001yy100:
3002    YYDEBUG(100, *YYCURSOR);
3003    yych = *++YYCURSOR;
3004    if (yych == 'T') goto yy101;
3005    if (yych != 't') goto yy57;
3006yy101:
3007    YYDEBUG(101, *YYCURSOR);
3008    yych = *++YYCURSOR;
3009    if (yych <= 'N') {
3010        if (yych == 'H') goto yy103;
3011        if (yych <= 'M') goto yy57;
3012    } else {
3013        if (yych <= 'h') {
3014            if (yych <= 'g') goto yy57;
3015            goto yy103;
3016        } else {
3017            if (yych != 'n') goto yy57;
3018        }
3019    }
3020    YYDEBUG(102, *YYCURSOR);
3021    yych = *++YYCURSOR;
3022    if (yych == 'I') goto yy108;
3023    if (yych == 'i') goto yy108;
3024    goto yy57;
3025yy103:
3026    YYDEBUG(103, *YYCURSOR);
3027    yych = *++YYCURSOR;
3028    if (yych == 'N') goto yy104;
3029    if (yych != 'n') goto yy57;
3030yy104:
3031    YYDEBUG(104, *YYCURSOR);
3032    yych = *++YYCURSOR;
3033    if (yych == 'I') goto yy105;
3034    if (yych != 'i') goto yy57;
3035yy105:
3036    YYDEBUG(105, *YYCURSOR);
3037    yych = *++YYCURSOR;
3038    if (yych == 'G') goto yy106;
3039    if (yych != 'g') goto yy57;
3040yy106:
3041    YYDEBUG(106, *YYCURSOR);
3042    yych = *++YYCURSOR;
3043    if (yych == 'H') goto yy107;
3044    if (yych != 'h') goto yy57;
3045yy107:
3046    YYDEBUG(107, *YYCURSOR);
3047    yych = *++YYCURSOR;
3048    if (yych == 'T') goto yy97;
3049    if (yych == 't') goto yy97;
3050    goto yy57;
3051yy108:
3052    YYDEBUG(108, *YYCURSOR);
3053    yych = *++YYCURSOR;
3054    if (yych == 'G') goto yy109;
3055    if (yych != 'g') goto yy57;
3056yy109:
3057    YYDEBUG(109, *YYCURSOR);
3058    yych = *++YYCURSOR;
3059    if (yych == 'H') goto yy110;
3060    if (yych != 'h') goto yy57;
3061yy110:
3062    YYDEBUG(110, *YYCURSOR);
3063    yych = *++YYCURSOR;
3064    if (yych == 'T') goto yy97;
3065    if (yych == 't') goto yy97;
3066    goto yy57;
3067yy111:
3068    YYDEBUG(111, *YYCURSOR);
3069    yyaccept = 3;
3070    yych = *(YYMARKER = ++YYCURSOR);
3071    if (yych == 'D') goto yy112;
3072    if (yych != 'd') goto yy73;
3073yy112:
3074    YYDEBUG(112, *YYCURSOR);
3075    yych = *++YYCURSOR;
3076    if (yych == 'A') goto yy113;
3077    if (yych != 'a') goto yy57;
3078yy113:
3079    YYDEBUG(113, *YYCURSOR);
3080    yych = *++YYCURSOR;
3081    if (yych == 'Y') goto yy77;
3082    if (yych == 'y') goto yy77;
3083    goto yy57;
3084yy114:
3085    YYDEBUG(114, *YYCURSOR);
3086    yych = *++YYCURSOR;
3087    if (yych == 'Y') goto yy97;
3088    if (yych == 'y') goto yy97;
3089    goto yy57;
3090yy115:
3091    YYDEBUG(115, *YYCURSOR);
3092    yych = *++YYCURSOR;
3093    if (yych == 'U') goto yy116;
3094    if (yych != 'u') goto yy57;
3095yy116:
3096    YYDEBUG(116, *YYCURSOR);
3097    yych = *++YYCURSOR;
3098    if (yych == 'R') goto yy97;
3099    if (yych == 'r') goto yy97;
3100    goto yy57;
3101yy117:
3102    YYDEBUG(117, *YYCURSOR);
3103    yych = *++YYCURSOR;
3104    if (yych == 'N') goto yy122;
3105    if (yych == 'n') goto yy122;
3106    goto yy57;
3107yy118:
3108    YYDEBUG(118, *YYCURSOR);
3109    yych = *++YYCURSOR;
3110    if (yych == 'N') goto yy119;
3111    if (yych != 'n') goto yy57;
3112yy119:
3113    YYDEBUG(119, *YYCURSOR);
3114    yyaccept = 3;
3115    yych = *(YYMARKER = ++YYCURSOR);
3116    if (yych <= 'U') {
3117        if (yych == 'S') goto yy77;
3118        if (yych <= 'T') goto yy73;
3119    } else {
3120        if (yych <= 's') {
3121            if (yych <= 'r') goto yy73;
3122            goto yy77;
3123        } else {
3124            if (yych != 'u') goto yy73;
3125        }
3126    }
3127    YYDEBUG(120, *YYCURSOR);
3128    yych = *++YYCURSOR;
3129    if (yych == 'T') goto yy121;
3130    if (yych != 't') goto yy57;
3131yy121:
3132    YYDEBUG(121, *YYCURSOR);
3133    yych = *++YYCURSOR;
3134    if (yych == 'E') goto yy97;
3135    if (yych == 'e') goto yy97;
3136    goto yy57;
3137yy122:
3138    YYDEBUG(122, *YYCURSOR);
3139    yyaccept = 3;
3140    yych = *(YYMARKER = ++YYCURSOR);
3141    if (yych <= 'T') {
3142        if (yych == 'D') goto yy123;
3143        if (yych <= 'S') goto yy73;
3144        goto yy124;
3145    } else {
3146        if (yych <= 'd') {
3147            if (yych <= 'c') goto yy73;
3148        } else {
3149            if (yych == 't') goto yy124;
3150            goto yy73;
3151        }
3152    }
3153yy123:
3154    YYDEBUG(123, *YYCURSOR);
3155    yych = *++YYCURSOR;
3156    if (yych == 'A') goto yy125;
3157    if (yych == 'a') goto yy125;
3158    goto yy57;
3159yy124:
3160    YYDEBUG(124, *YYCURSOR);
3161    yych = *++YYCURSOR;
3162    if (yych == 'H') goto yy97;
3163    if (yych == 'h') goto yy97;
3164    goto yy57;
3165yy125:
3166    YYDEBUG(125, *YYCURSOR);
3167    yych = *++YYCURSOR;
3168    if (yych == 'Y') goto yy77;
3169    if (yych == 'y') goto yy77;
3170    goto yy57;
3171yy126:
3172    YYDEBUG(126, *YYCURSOR);
3173    yych = *++YYCURSOR;
3174    if (yych == 'N') goto yy137;
3175    if (yych == 'n') goto yy137;
3176    goto yy57;
3177yy127:
3178    YYDEBUG(127, *YYCURSOR);
3179    yych = *++YYCURSOR;
3180    if (yych == 'T') goto yy132;
3181    if (yych == 't') goto yy132;
3182    goto yy57;
3183yy128:
3184    YYDEBUG(128, *YYCURSOR);
3185    yych = *++YYCURSOR;
3186    if (yych == 'C') goto yy129;
3187    if (yych != 'c') goto yy57;
3188yy129:
3189    YYDEBUG(129, *YYCURSOR);
3190    yyaccept = 3;
3191    yych = *(YYMARKER = ++YYCURSOR);
3192    if (yych <= 'S') {
3193        if (yych == 'O') goto yy130;
3194        if (yych <= 'R') goto yy73;
3195        goto yy77;
3196    } else {
3197        if (yych <= 'o') {
3198            if (yych <= 'n') goto yy73;
3199        } else {
3200            if (yych == 's') goto yy77;
3201            goto yy73;
3202        }
3203    }
3204yy130:
3205    YYDEBUG(130, *YYCURSOR);
3206    yych = *++YYCURSOR;
3207    if (yych == 'N') goto yy131;
3208    if (yych != 'n') goto yy57;
3209yy131:
3210    YYDEBUG(131, *YYCURSOR);
3211    yych = *++YYCURSOR;
3212    if (yych == 'D') goto yy97;
3213    if (yych == 'd') goto yy97;
3214    goto yy57;
3215yy132:
3216    YYDEBUG(132, *YYCURSOR);
3217    yyaccept = 3;
3218    yych = *(YYMARKER = ++YYCURSOR);
3219    if (yych == 'U') goto yy133;
3220    if (yych != 'u') goto yy73;
3221yy133:
3222    YYDEBUG(133, *YYCURSOR);
3223    yych = *++YYCURSOR;
3224    if (yych == 'R') goto yy134;
3225    if (yych != 'r') goto yy57;
3226yy134:
3227    YYDEBUG(134, *YYCURSOR);
3228    yych = *++YYCURSOR;
3229    if (yych == 'D') goto yy135;
3230    if (yych != 'd') goto yy57;
3231yy135:
3232    YYDEBUG(135, *YYCURSOR);
3233    yych = *++YYCURSOR;
3234    if (yych == 'A') goto yy136;
3235    if (yych != 'a') goto yy57;
3236yy136:
3237    YYDEBUG(136, *YYCURSOR);
3238    yych = *++YYCURSOR;
3239    if (yych == 'Y') goto yy77;
3240    if (yych == 'y') goto yy77;
3241    goto yy57;
3242yy137:
3243    YYDEBUG(137, *YYCURSOR);
3244    yyaccept = 3;
3245    yych = *(YYMARKER = ++YYCURSOR);
3246    if (yych == 'D') goto yy138;
3247    if (yych != 'd') goto yy73;
3248yy138:
3249    YYDEBUG(138, *YYCURSOR);
3250    yych = *++YYCURSOR;
3251    if (yych == 'A') goto yy139;
3252    if (yych != 'a') goto yy57;
3253yy139:
3254    YYDEBUG(139, *YYCURSOR);
3255    yych = *++YYCURSOR;
3256    if (yych == 'Y') goto yy77;
3257    if (yych == 'y') goto yy77;
3258    goto yy57;
3259yy140:
3260    YYDEBUG(140, *YYCURSOR);
3261    yych = *++YYCURSOR;
3262    goto yy4;
3263yy141:
3264    YYDEBUG(141, *YYCURSOR);
3265    yych = *++YYCURSOR;
3266    if (yych <= '@') {
3267        if (yych == ')') goto yy140;
3268        goto yy4;
3269    } else {
3270        if (yych <= 'Z') goto yy142;
3271        if (yych <= '`') goto yy4;
3272        if (yych >= '{') goto yy4;
3273    }
3274yy142:
3275    YYDEBUG(142, *YYCURSOR);
3276    yych = *++YYCURSOR;
3277    if (yych <= '@') {
3278        if (yych == ')') goto yy140;
3279        goto yy4;
3280    } else {
3281        if (yych <= 'Z') goto yy143;
3282        if (yych <= '`') goto yy4;
3283        if (yych >= '{') goto yy4;
3284    }
3285yy143:
3286    YYDEBUG(143, *YYCURSOR);
3287    yych = *++YYCURSOR;
3288    if (yych <= '@') {
3289        if (yych == ')') goto yy140;
3290        goto yy4;
3291    } else {
3292        if (yych <= 'Z') goto yy144;
3293        if (yych <= '`') goto yy4;
3294        if (yych >= '{') goto yy4;
3295    }
3296yy144:
3297    YYDEBUG(144, *YYCURSOR);
3298    yych = *++YYCURSOR;
3299    if (yych <= '@') {
3300        if (yych == ')') goto yy140;
3301        goto yy4;
3302    } else {
3303        if (yych <= 'Z') goto yy145;
3304        if (yych <= '`') goto yy4;
3305        if (yych >= '{') goto yy4;
3306    }
3307yy145:
3308    YYDEBUG(145, *YYCURSOR);
3309    yych = *++YYCURSOR;
3310    if (yych == ')') goto yy140;
3311    goto yy4;
3312yy146:
3313    YYDEBUG(146, *YYCURSOR);
3314    yyaccept = 0;
3315    yych = *(YYMARKER = ++YYCURSOR);
3316    if (yych <= '/') {
3317        if (yych <= ',') {
3318            if (yych == ')') goto yy140;
3319            goto yy4;
3320        } else {
3321            if (yych == '.') goto yy4;
3322            goto yy148;
3323        }
3324    } else {
3325        if (yych <= '^') {
3326            if (yych <= '@') goto yy4;
3327            if (yych <= 'Z') goto yy142;
3328            goto yy4;
3329        } else {
3330            if (yych <= '_') goto yy148;
3331            if (yych <= '`') goto yy4;
3332            if (yych >= '{') goto yy4;
3333        }
3334    }
3335yy147:
3336    YYDEBUG(147, *YYCURSOR);
3337    yyaccept = 0;
3338    yych = *(YYMARKER = ++YYCURSOR);
3339    if (yych <= '/') {
3340        if (yych <= ',') {
3341            if (yych == ')') goto yy140;
3342            goto yy4;
3343        } else {
3344            if (yych == '.') goto yy4;
3345        }
3346    } else {
3347        if (yych <= '^') {
3348            if (yych <= '@') goto yy4;
3349            if (yych <= 'Z') goto yy143;
3350            goto yy4;
3351        } else {
3352            if (yych <= '_') goto yy148;
3353            if (yych <= '`') goto yy4;
3354            if (yych <= 'z') goto yy151;
3355            goto yy4;
3356        }
3357    }
3358yy148:
3359    YYDEBUG(148, *YYCURSOR);
3360    ++YYCURSOR;
3361    if (YYLIMIT <= YYCURSOR) YYFILL(1);
3362    yych = *YYCURSOR;
3363    if (yybm[0+yych] & 8) {
3364        goto yy149;
3365    }
3366    goto yy57;
3367yy149:
3368    YYDEBUG(149, *YYCURSOR);
3369    yyaccept = 0;
3370    YYMARKER = ++YYCURSOR;
3371    if (YYLIMIT <= YYCURSOR) YYFILL(1);
3372    yych = *YYCURSOR;
3373    YYDEBUG(150, *YYCURSOR);
3374    if (yybm[0+yych] & 8) {
3375        goto yy149;
3376    }
3377    if (yych <= '.') {
3378        if (yych == '-') goto yy148;
3379        goto yy4;
3380    } else {
3381        if (yych <= '/') goto yy148;
3382        if (yych == '_') goto yy148;
3383        goto yy4;
3384    }
3385yy151:
3386    YYDEBUG(151, *YYCURSOR);
3387    yyaccept = 0;
3388    yych = *(YYMARKER = ++YYCURSOR);
3389    if (yych <= '/') {
3390        if (yych <= ',') {
3391            if (yych == ')') goto yy140;
3392            goto yy4;
3393        } else {
3394            if (yych == '.') goto yy4;
3395            goto yy148;
3396        }
3397    } else {
3398        if (yych <= '^') {
3399            if (yych <= '@') goto yy4;
3400            if (yych <= 'Z') goto yy144;
3401            goto yy4;
3402        } else {
3403            if (yych <= '_') goto yy148;
3404            if (yych <= '`') goto yy4;
3405            if (yych >= '{') goto yy4;
3406        }
3407    }
3408yy152:
3409    YYDEBUG(152, *YYCURSOR);
3410    yyaccept = 0;
3411    yych = *(YYMARKER = ++YYCURSOR);
3412    if (yych <= '/') {
3413        if (yych <= ',') {
3414            if (yych == ')') goto yy140;
3415            goto yy4;
3416        } else {
3417            if (yych == '.') goto yy4;
3418            goto yy148;
3419        }
3420    } else {
3421        if (yych <= '^') {
3422            if (yych <= '@') goto yy4;
3423            if (yych <= 'Z') goto yy145;
3424            goto yy4;
3425        } else {
3426            if (yych <= '_') goto yy148;
3427            if (yych <= '`') goto yy4;
3428            if (yych >= '{') goto yy4;
3429        }
3430    }
3431yy153:
3432    YYDEBUG(153, *YYCURSOR);
3433    yyaccept = 0;
3434    yych = *(YYMARKER = ++YYCURSOR);
3435    if (yybm[0+yych] & 16) {
3436        goto yy154;
3437    }
3438    if (yych <= '-') {
3439        if (yych == ')') goto yy140;
3440        if (yych <= ',') goto yy4;
3441        goto yy148;
3442    } else {
3443        if (yych <= '/') {
3444            if (yych <= '.') goto yy4;
3445            goto yy148;
3446        } else {
3447            if (yych == '_') goto yy148;
3448            goto yy4;
3449        }
3450    }
3451yy154:
3452    YYDEBUG(154, *YYCURSOR);
3453    ++YYCURSOR;
3454    if (YYLIMIT <= YYCURSOR) YYFILL(1);
3455    yych = *YYCURSOR;
3456yy155:
3457    YYDEBUG(155, *YYCURSOR);
3458    if (yybm[0+yych] & 16) {
3459        goto yy154;
3460    }
3461    if (yych <= '.') {
3462        if (yych == '-') goto yy148;
3463        goto yy57;
3464    } else {
3465        if (yych <= '/') goto yy148;
3466        if (yych == '_') goto yy148;
3467        goto yy57;
3468    }
3469yy156:
3470    YYDEBUG(156, *YYCURSOR);
3471    yych = *++YYCURSOR;
3472    if (yych <= '@') {
3473        if (yych == ')') goto yy140;
3474        goto yy4;
3475    } else {
3476        if (yych <= 'Z') goto yy141;
3477        if (yych <= '`') goto yy4;
3478        if (yych <= 'z') goto yy141;
3479        goto yy4;
3480    }
3481yy157:
3482    YYDEBUG(157, *YYCURSOR);
3483    yych = *++YYCURSOR;
3484    if (yych <= 'S') {
3485        if (yych == ')') goto yy140;
3486        if (yych <= '@') goto yy4;
3487        goto yy142;
3488    } else {
3489        if (yych <= 'Z') {
3490            if (yych >= 'U') goto yy142;
3491        } else {
3492            if (yych <= '`') goto yy4;
3493            if (yych <= 'z') goto yy142;
3494            goto yy4;
3495        }
3496    }
3497    YYDEBUG(158, *YYCURSOR);
3498    yyaccept = 0;
3499    yych = *(YYMARKER = ++YYCURSOR);
3500    if (yych <= ',') {
3501        if (yych <= ')') {
3502            if (yych <= '(') goto yy4;
3503            goto yy140;
3504        } else {
3505            if (yych != '+') goto yy4;
3506        }
3507    } else {
3508        if (yych <= 'Z') {
3509            if (yych <= '-') goto yy159;
3510            if (yych <= '@') goto yy4;
3511            goto yy143;
3512        } else {
3513            if (yych <= '`') goto yy4;
3514            if (yych <= 'z') goto yy143;
3515            goto yy4;
3516        }
3517    }
3518yy159:
3519    YYDEBUG(159, *YYCURSOR);
3520    yych = *++YYCURSOR;
3521    if (yych <= '/') goto yy57;
3522    if (yych <= '1') goto yy160;
3523    if (yych <= '2') goto yy161;
3524    if (yych <= '9') goto yy162;
3525    goto yy57;
3526yy160:
3527    YYDEBUG(160, *YYCURSOR);
3528    yych = *++YYCURSOR;
3529    if (yych <= '/') goto yy4;
3530    if (yych <= '9') goto yy162;
3531    if (yych <= ':') goto yy163;
3532    goto yy4;
3533yy161:
3534    YYDEBUG(161, *YYCURSOR);
3535    yych = *++YYCURSOR;
3536    if (yych <= '5') {
3537        if (yych <= '/') goto yy4;
3538        if (yych >= '5') goto yy164;
3539    } else {
3540        if (yych <= '9') goto yy140;
3541        if (yych <= ':') goto yy163;
3542        goto yy4;
3543    }
3544yy162:
3545    YYDEBUG(162, *YYCURSOR);
3546    yych = *++YYCURSOR;
3547    if (yych <= '/') goto yy4;
3548    if (yych <= '5') goto yy164;
3549    if (yych <= '9') goto yy140;
3550    if (yych >= ';') goto yy4;
3551yy163:
3552    YYDEBUG(163, *YYCURSOR);
3553    yych = *++YYCURSOR;
3554    if (yych <= '/') goto yy4;
3555    if (yych <= '5') goto yy164;
3556    if (yych <= '9') goto yy140;
3557    goto yy4;
3558yy164:
3559    YYDEBUG(164, *YYCURSOR);
3560    yych = *++YYCURSOR;
3561    if (yych <= '/') goto yy4;
3562    if (yych <= '9') goto yy140;
3563    goto yy4;
3564yy165:
3565    YYDEBUG(165, *YYCURSOR);
3566    yych = *++YYCURSOR;
3567    if (yych <= 'E') {
3568        if (yych <= '@') {
3569            if (yych == ')') goto yy140;
3570            goto yy4;
3571        } else {
3572            if (yych <= 'C') goto yy142;
3573            if (yych >= 'E') goto yy168;
3574        }
3575    } else {
3576        if (yych <= 'c') {
3577            if (yych <= 'Z') goto yy142;
3578            if (yych <= '`') goto yy4;
3579            goto yy142;
3580        } else {
3581            if (yych <= 'd') goto yy166;
3582            if (yych <= 'e') goto yy168;
3583            if (yych <= 'z') goto yy142;
3584            goto yy4;
3585        }
3586    }
3587yy166:
3588    YYDEBUG(166, *YYCURSOR);
3589    ++YYCURSOR;
3590    if ((yych = *YYCURSOR) <= 'N') {
3591        if (yych <= ')') {
3592            if (yych >= ')') goto yy140;
3593        } else {
3594            if (yych <= '@') goto yy167;
3595            if (yych <= 'M') goto yy143;
3596            goto yy174;
3597        }
3598    } else {
3599        if (yych <= 'm') {
3600            if (yych <= 'Z') goto yy143;
3601            if (yych >= 'a') goto yy143;
3602        } else {
3603            if (yych <= 'n') goto yy174;
3604            if (yych <= 'z') goto yy143;
3605        }
3606    }
3607yy167:
3608    YYDEBUG(167, *YYCURSOR);
3609#line 1612 "ext/date/lib/parse_date.re"
3610    {
3611        const timelib_relunit* relunit;
3612        DEBUG_OUTPUT("daytext");
3613        TIMELIB_INIT;
3614        TIMELIB_HAVE_RELATIVE();
3615        TIMELIB_HAVE_WEEKDAY_RELATIVE();
3616        TIMELIB_UNHAVE_TIME();
3617        relunit = timelib_lookup_relunit((char**) &ptr);
3618        s->time->relative.weekday = relunit->multiplier;
3619        if (s->time->relative.weekday_behavior != 2) {
3620            s->time->relative.weekday_behavior = 1;
3621        }
3622
3623        TIMELIB_DEINIT;
3624        return TIMELIB_WEEKDAY;
3625    }
3626#line 3627 "ext/date/lib/parse_date.c"
3627yy168:
3628    YYDEBUG(168, *YYCURSOR);
3629    yych = *++YYCURSOR;
3630    if (yych <= 'K') {
3631        if (yych <= ')') {
3632            if (yych <= '(') goto yy4;
3633            goto yy140;
3634        } else {
3635            if (yych <= '@') goto yy4;
3636            if (yych <= 'J') goto yy143;
3637        }
3638    } else {
3639        if (yych <= 'j') {
3640            if (yych <= 'Z') goto yy143;
3641            if (yych <= '`') goto yy4;
3642            goto yy143;
3643        } else {
3644            if (yych <= 'k') goto yy169;
3645            if (yych <= 'z') goto yy143;
3646            goto yy4;
3647        }
3648    }
3649yy169:
3650    YYDEBUG(169, *YYCURSOR);
3651    yych = *++YYCURSOR;
3652    if (yych <= 'D') {
3653        if (yych <= ')') {
3654            if (yych <= '(') goto yy4;
3655            goto yy140;
3656        } else {
3657            if (yych <= '@') goto yy4;
3658            if (yych <= 'C') goto yy144;
3659        }
3660    } else {
3661        if (yych <= 'c') {
3662            if (yych <= 'Z') goto yy144;
3663            if (yych <= '`') goto yy4;
3664            goto yy144;
3665        } else {
3666            if (yych <= 'd') goto yy170;
3667            if (yych <= 'z') goto yy144;
3668            goto yy4;
3669        }
3670    }
3671yy170:
3672    YYDEBUG(170, *YYCURSOR);
3673    yych = *++YYCURSOR;
3674    if (yych <= 'A') {
3675        if (yych == ')') goto yy140;
3676        if (yych <= '@') goto yy4;
3677    } else {
3678        if (yych <= '`') {
3679            if (yych <= 'Z') goto yy145;
3680            goto yy4;
3681        } else {
3682            if (yych <= 'a') goto yy171;
3683            if (yych <= 'z') goto yy145;
3684            goto yy4;
3685        }
3686    }
3687yy171:
3688    YYDEBUG(171, *YYCURSOR);
3689    yych = *++YYCURSOR;
3690    if (yych <= 'X') {
3691        if (yych == ')') goto yy140;
3692        goto yy4;
3693    } else {
3694        if (yych <= 'Y') goto yy172;
3695        if (yych != 'y') goto yy4;
3696    }
3697yy172:
3698    YYDEBUG(172, *YYCURSOR);
3699    yych = *++YYCURSOR;
3700    if (yych == 'S') goto yy173;
3701    if (yych != 's') goto yy167;
3702yy173:
3703    YYDEBUG(173, *YYCURSOR);
3704    yych = *++YYCURSOR;
3705    goto yy167;
3706yy174:
3707    YYDEBUG(174, *YYCURSOR);
3708    yych = *++YYCURSOR;
3709    if (yych <= 'E') {
3710        if (yych <= ')') {
3711            if (yych <= '(') goto yy4;
3712            goto yy140;
3713        } else {
3714            if (yych <= '@') goto yy4;
3715            if (yych <= 'D') goto yy144;
3716        }
3717    } else {
3718        if (yych <= 'd') {
3719            if (yych <= 'Z') goto yy144;
3720            if (yych <= '`') goto yy4;
3721            goto yy144;
3722        } else {
3723            if (yych <= 'e') goto yy175;
3724            if (yych <= 'z') goto yy144;
3725            goto yy4;
3726        }
3727    }
3728yy175:
3729    YYDEBUG(175, *YYCURSOR);
3730    yych = *++YYCURSOR;
3731    if (yych <= 'S') {
3732        if (yych <= ')') {
3733            if (yych <= '(') goto yy4;
3734            goto yy140;
3735        } else {
3736            if (yych <= '@') goto yy4;
3737            if (yych <= 'R') goto yy145;
3738        }
3739    } else {
3740        if (yych <= 'r') {
3741            if (yych <= 'Z') goto yy145;
3742            if (yych <= '`') goto yy4;
3743            goto yy145;
3744        } else {
3745            if (yych <= 's') goto yy176;
3746            if (yych <= 'z') goto yy145;
3747            goto yy4;
3748        }
3749    }
3750yy176:
3751    YYDEBUG(176, *YYCURSOR);
3752    yyaccept = 0;
3753    yych = *(YYMARKER = ++YYCURSOR);
3754    if (yych <= 'C') {
3755        if (yych == ')') goto yy140;
3756        goto yy4;
3757    } else {
3758        if (yych <= 'D') goto yy177;
3759        if (yych != 'd') goto yy4;
3760    }
3761yy177:
3762    YYDEBUG(177, *YYCURSOR);
3763    yych = *++YYCURSOR;
3764    if (yych == 'A') goto yy178;
3765    if (yych != 'a') goto yy57;
3766yy178:
3767    YYDEBUG(178, *YYCURSOR);
3768    yych = *++YYCURSOR;
3769    if (yych == 'Y') goto yy173;
3770    if (yych == 'y') goto yy173;
3771    goto yy57;
3772yy179:
3773    YYDEBUG(179, *YYCURSOR);
3774    yyaccept = 0;
3775    yych = *(YYMARKER = ++YYCURSOR);
3776    if (yych <= 'D') {
3777        if (yych <= '-') {
3778            if (yych == ')') goto yy140;
3779            if (yych <= ',') goto yy4;
3780            goto yy148;
3781        } else {
3782            if (yych <= '/') {
3783                if (yych <= '.') goto yy4;
3784                goto yy148;
3785            } else {
3786                if (yych <= '@') goto yy4;
3787                if (yych <= 'C') goto yy142;
3788                goto yy166;
3789            }
3790        }
3791    } else {
3792        if (yych <= '`') {
3793            if (yych <= 'Z') {
3794                if (yych <= 'E') goto yy168;
3795                goto yy142;
3796            } else {
3797                if (yych == '_') goto yy148;
3798                goto yy4;
3799            }
3800        } else {
3801            if (yych <= 'd') {
3802                if (yych <= 'c') goto yy147;
3803            } else {
3804                if (yych <= 'e') goto yy181;
3805                if (yych <= 'z') goto yy147;
3806                goto yy4;
3807            }
3808        }
3809    }
3810    YYDEBUG(180, *YYCURSOR);
3811    yyaccept = 4;
3812    yych = *(YYMARKER = ++YYCURSOR);
3813    if (yych <= 'M') {
3814        if (yych <= '-') {
3815            if (yych == ')') goto yy140;
3816            if (yych <= ',') goto yy167;
3817            goto yy148;
3818        } else {
3819            if (yych == '/') goto yy148;
3820            if (yych <= '@') goto yy167;
3821            goto yy143;
3822        }
3823    } else {
3824        if (yych <= '_') {
3825            if (yych <= 'N') goto yy174;
3826            if (yych <= 'Z') goto yy143;
3827            if (yych <= '^') goto yy167;
3828            goto yy148;
3829        } else {
3830            if (yych <= 'm') {
3831                if (yych <= '`') goto yy167;
3832                goto yy151;
3833            } else {
3834                if (yych <= 'n') goto yy187;
3835                if (yych <= 'z') goto yy151;
3836                goto yy167;
3837            }
3838        }
3839    }
3840yy181:
3841    YYDEBUG(181, *YYCURSOR);
3842    yyaccept = 0;
3843    yych = *(YYMARKER = ++YYCURSOR);
3844    if (yych <= 'J') {
3845        if (yych <= '-') {
3846            if (yych == ')') goto yy140;
3847            if (yych <= ',') goto yy4;
3848            goto yy148;
3849        } else {
3850            if (yych == '/') goto yy148;
3851            if (yych <= '@') goto yy4;
3852            goto yy143;
3853        }
3854    } else {
3855        if (yych <= '_') {
3856            if (yych <= 'K') goto yy169;
3857            if (yych <= 'Z') goto yy143;
3858            if (yych <= '^') goto yy4;
3859            goto yy148;
3860        } else {
3861            if (yych <= 'j') {
3862                if (yych <= '`') goto yy4;
3863                goto yy151;
3864            } else {
3865                if (yych <= 'k') goto yy182;
3866                if (yych <= 'z') goto yy151;
3867                goto yy4;
3868            }
3869        }
3870    }
3871yy182:
3872    YYDEBUG(182, *YYCURSOR);
3873    yyaccept = 0;
3874    yych = *(YYMARKER = ++YYCURSOR);
3875    if (yych <= 'C') {
3876        if (yych <= '-') {
3877            if (yych == ')') goto yy140;
3878            if (yych <= ',') goto yy4;
3879            goto yy148;
3880        } else {
3881            if (yych == '/') goto yy148;
3882            if (yych <= '@') goto yy4;
3883            goto yy144;
3884        }
3885    } else {
3886        if (yych <= '_') {
3887            if (yych <= 'D') goto yy170;
3888            if (yych <= 'Z') goto yy144;
3889            if (yych <= '^') goto yy4;
3890            goto yy148;
3891        } else {
3892            if (yych <= 'c') {
3893                if (yych <= '`') goto yy4;
3894                goto yy152;
3895            } else {
3896                if (yych <= 'd') goto yy183;
3897                if (yych <= 'z') goto yy152;
3898                goto yy4;
3899            }
3900        }
3901    }
3902yy183:
3903    YYDEBUG(183, *YYCURSOR);
3904    yyaccept = 0;
3905    yych = *(YYMARKER = ++YYCURSOR);
3906    if (yych <= '@') {
3907        if (yych <= ',') {
3908            if (yych == ')') goto yy140;
3909            goto yy4;
3910        } else {
3911            if (yych == '.') goto yy4;
3912            if (yych <= '/') goto yy148;
3913            goto yy4;
3914        }
3915    } else {
3916        if (yych <= '_') {
3917            if (yych <= 'A') goto yy171;
3918            if (yych <= 'Z') goto yy145;
3919            if (yych <= '^') goto yy4;
3920            goto yy148;
3921        } else {
3922            if (yych <= '`') goto yy4;
3923            if (yych <= 'a') goto yy184;
3924            if (yych <= 'z') goto yy153;
3925            goto yy4;
3926        }
3927    }
3928yy184:
3929    YYDEBUG(184, *YYCURSOR);
3930    yyaccept = 0;
3931    yych = *(YYMARKER = ++YYCURSOR);
3932    if (yych <= 'X') {
3933        if (yych <= ',') {
3934            if (yych == ')') goto yy140;
3935            goto yy4;
3936        } else {
3937            if (yych == '.') goto yy4;
3938            if (yych <= '/') goto yy148;
3939            goto yy4;
3940        }
3941    } else {
3942        if (yych <= '`') {
3943            if (yych <= 'Y') goto yy172;
3944            if (yych == '_') goto yy148;
3945            goto yy4;
3946        } else {
3947            if (yych == 'y') goto yy185;
3948            if (yych <= 'z') goto yy154;
3949            goto yy4;
3950        }
3951    }
3952yy185:
3953    YYDEBUG(185, *YYCURSOR);
3954    yyaccept = 4;
3955    yych = *(YYMARKER = ++YYCURSOR);
3956    if (yych <= 'S') {
3957        if (yych <= '.') {
3958            if (yych == '-') goto yy148;
3959            goto yy167;
3960        } else {
3961            if (yych <= '/') goto yy148;
3962            if (yych <= 'R') goto yy167;
3963            goto yy173;
3964        }
3965    } else {
3966        if (yych <= '`') {
3967            if (yych == '_') goto yy148;
3968            goto yy167;
3969        } else {
3970            if (yych == 's') goto yy186;
3971            if (yych <= 'z') goto yy154;
3972            goto yy167;
3973        }
3974    }
3975yy186:
3976    YYDEBUG(186, *YYCURSOR);
3977    yyaccept = 4;
3978    yych = *(YYMARKER = ++YYCURSOR);
3979    if (yybm[0+yych] & 16) {
3980        goto yy154;
3981    }
3982    if (yych <= '.') {
3983        if (yych == '-') goto yy148;
3984        goto yy167;
3985    } else {
3986        if (yych <= '/') goto yy148;
3987        if (yych == '_') goto yy148;
3988        goto yy167;
3989    }
3990yy187:
3991    YYDEBUG(187, *YYCURSOR);
3992    yyaccept = 0;
3993    yych = *(YYMARKER = ++YYCURSOR);
3994    if (yych <= 'D') {
3995        if (yych <= '-') {
3996            if (yych == ')') goto yy140;
3997            if (yych <= ',') goto yy4;
3998            goto yy148;
3999        } else {
4000            if (yych == '/') goto yy148;
4001            if (yych <= '@') goto yy4;
4002            goto yy144;
4003        }
4004    } else {
4005        if (yych <= '_') {
4006            if (yych <= 'E') goto yy175;
4007            if (yych <= 'Z') goto yy144;
4008            if (yych <= '^') goto yy4;
4009            goto yy148;
4010        } else {
4011            if (yych <= 'd') {
4012                if (yych <= '`') goto yy4;
4013                goto yy152;
4014            } else {
4015                if (yych <= 'e') goto yy188;
4016                if (yych <= 'z') goto yy152;
4017                goto yy4;
4018            }
4019        }
4020    }
4021yy188:
4022    YYDEBUG(188, *YYCURSOR);
4023    yyaccept = 0;
4024    yych = *(YYMARKER = ++YYCURSOR);
4025    if (yych <= 'R') {
4026        if (yych <= '-') {
4027            if (yych == ')') goto yy140;
4028            if (yych <= ',') goto yy4;
4029            goto yy148;
4030        } else {
4031            if (yych == '/') goto yy148;
4032            if (yych <= '@') goto yy4;
4033            goto yy145;
4034        }
4035    } else {
4036        if (yych <= '_') {
4037            if (yych <= 'S') goto yy176;
4038            if (yych <= 'Z') goto yy145;
4039            if (yych <= '^') goto yy4;
4040            goto yy148;
4041        } else {
4042            if (yych <= 'r') {
4043                if (yych <= '`') goto yy4;
4044                goto yy153;
4045            } else {
4046                if (yych <= 's') goto yy189;
4047                if (yych <= 'z') goto yy153;
4048                goto yy4;
4049            }
4050        }
4051    }
4052yy189:
4053    YYDEBUG(189, *YYCURSOR);
4054    yyaccept = 0;
4055    yych = *(YYMARKER = ++YYCURSOR);
4056    if (yych <= 'C') {
4057        if (yych <= ',') {
4058            if (yych == ')') goto yy140;
4059            goto yy4;
4060        } else {
4061            if (yych == '.') goto yy4;
4062            if (yych <= '/') goto yy148;
4063            goto yy4;
4064        }
4065    } else {
4066        if (yych <= '`') {
4067            if (yych <= 'D') goto yy177;
4068            if (yych == '_') goto yy148;
4069            goto yy4;
4070        } else {
4071            if (yych == 'd') goto yy190;
4072            if (yych <= 'z') goto yy154;
4073            goto yy4;
4074        }
4075    }
4076yy190:
4077    YYDEBUG(190, *YYCURSOR);
4078    yych = *++YYCURSOR;
4079    if (yych == 'A') goto yy178;
4080    if (yych != 'a') goto yy155;
4081    YYDEBUG(191, *YYCURSOR);
4082    yych = *++YYCURSOR;
4083    if (yych == 'Y') goto yy173;
4084    if (yych == 'y') goto yy186;
4085    goto yy155;
4086yy192:
4087    YYDEBUG(192, *YYCURSOR);
4088    yych = *++YYCURSOR;
4089    if (yych <= 'C') {
4090        if (yych <= ')') {
4091            if (yych <= '(') goto yy4;
4092            goto yy140;
4093        } else {
4094            if (yych <= '@') goto yy4;
4095            if (yych <= 'B') goto yy142;
4096        }
4097    } else {
4098        if (yych <= 'b') {
4099            if (yych <= 'Z') goto yy142;
4100            if (yych <= '`') goto yy4;
4101            goto yy142;
4102        } else {
4103            if (yych <= 'c') goto yy193;
4104            if (yych <= 'z') goto yy142;
4105            goto yy4;
4106        }
4107    }
4108yy193:
4109    YYDEBUG(193, *YYCURSOR);
4110    yyaccept = 5;
4111    yych = *(YYMARKER = ++YYCURSOR);
4112    if (yych <= '/') {
4113        if (yych <= '(') {
4114            if (yych <= '\t') {
4115                if (yych >= '\t') goto yy196;
4116            } else {
4117                if (yych == ' ') goto yy196;
4118            }
4119        } else {
4120            if (yych <= ',') {
4121                if (yych <= ')') goto yy140;
4122            } else {
4123                if (yych <= '-') goto yy197;
4124                if (yych <= '.') goto yy196;
4125            }
4126        }
4127    } else {
4128        if (yych <= 'Z') {
4129            if (yych <= '@') {
4130                if (yych <= '9') goto yy196;
4131            } else {
4132                if (yych == 'E') goto yy202;
4133                goto yy143;
4134            }
4135        } else {
4136            if (yych <= 'd') {
4137                if (yych >= 'a') goto yy143;
4138            } else {
4139                if (yych <= 'e') goto yy202;
4140                if (yych <= 'z') goto yy143;
4141            }
4142        }
4143    }
4144yy194:
4145    YYDEBUG(194, *YYCURSOR);
4146#line 1671 "ext/date/lib/parse_date.re"
4147    {
4148        DEBUG_OUTPUT("monthtext");
4149        TIMELIB_INIT;
4150        TIMELIB_HAVE_DATE();
4151        s->time->m = timelib_lookup_month((char **) &ptr);
4152        TIMELIB_DEINIT;
4153        return TIMELIB_DATE_TEXT;
4154    }
4155#line 4156 "ext/date/lib/parse_date.c"
4156yy195:
4157    YYDEBUG(195, *YYCURSOR);
4158    ++YYCURSOR;
4159    if ((YYLIMIT - YYCURSOR) < 21) YYFILL(21);
4160    yych = *YYCURSOR;
4161yy196:
4162    YYDEBUG(196, *YYCURSOR);
4163    if (yybm[0+yych] & 32) {
4164        goto yy195;
4165    }
4166    if (yych <= '/') goto yy57;
4167    if (yych <= '2') goto yy198;
4168    if (yych <= '3') goto yy200;
4169    if (yych <= '9') goto yy201;
4170    goto yy57;
4171yy197:
4172    YYDEBUG(197, *YYCURSOR);
4173    yych = *++YYCURSOR;
4174    if (yych <= '/') goto yy196;
4175    if (yych <= '0') goto yy357;
4176    if (yych <= '2') goto yy358;
4177    if (yych <= '3') goto yy359;
4178    goto yy196;
4179yy198:
4180    YYDEBUG(198, *YYCURSOR);
4181    yyaccept = 6;
4182    yych = *(YYMARKER = ++YYCURSOR);
4183    if (yych <= 'm') {
4184        if (yych <= '1') {
4185            if (yych <= '/') goto yy216;
4186            if (yych <= '0') goto yy298;
4187            goto yy299;
4188        } else {
4189            if (yych <= '2') goto yy355;
4190            if (yych <= '9') goto yy356;
4191            goto yy216;
4192        }
4193    } else {
4194        if (yych <= 'r') {
4195            if (yych <= 'n') goto yy212;
4196            if (yych <= 'q') goto yy216;
4197            goto yy213;
4198        } else {
4199            if (yych <= 's') goto yy211;
4200            if (yych <= 't') goto yy214;
4201            goto yy216;
4202        }
4203    }
4204yy199:
4205    YYDEBUG(199, *YYCURSOR);
4206#line 1417 "ext/date/lib/parse_date.re"
4207    {
4208        int length = 0;
4209        DEBUG_OUTPUT("datetextual | datenoyear");
4210        TIMELIB_INIT;
4211        TIMELIB_HAVE_DATE();
4212        s->time->m = timelib_get_month((char **) &ptr);
4213        s->time->d = timelib_get_nr((char **) &ptr, 2);
4214        s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
4215        TIMELIB_PROCESS_YEAR(s->time->y, length);
4216        TIMELIB_DEINIT;
4217        return TIMELIB_DATE_TEXT;
4218    }
4219#line 4220 "ext/date/lib/parse_date.c"
4220yy200:
4221    YYDEBUG(200, *YYCURSOR);
4222    yyaccept = 6;
4223    yych = *(YYMARKER = ++YYCURSOR);
4224    if (yych <= 'm') {
4225        if (yych <= '1') {
4226            if (yych <= '/') goto yy216;
4227            if (yych <= '0') goto yy298;
4228            goto yy299;
4229        } else {
4230            if (yych <= '2') goto yy209;
4231            if (yych <= '9') goto yy210;
4232            goto yy216;
4233        }
4234    } else {
4235        if (yych <= 'r') {
4236            if (yych <= 'n') goto yy212;
4237            if (yych <= 'q') goto yy216;
4238            goto yy213;
4239        } else {
4240            if (yych <= 's') goto yy211;
4241            if (yych <= 't') goto yy214;
4242            goto yy216;
4243        }
4244    }
4245yy201:
4246    YYDEBUG(201, *YYCURSOR);
4247    yyaccept = 6;
4248    yych = *(YYMARKER = ++YYCURSOR);
4249    if (yych <= 'm') {
4250        if (yych <= '1') {
4251            if (yych <= '/') goto yy216;
4252            if (yych <= '0') goto yy207;
4253            goto yy208;
4254        } else {
4255            if (yych <= '2') goto yy209;
4256            if (yych <= '9') goto yy210;
4257            goto yy216;
4258        }
4259    } else {
4260        if (yych <= 'r') {
4261            if (yych <= 'n') goto yy212;
4262            if (yych <= 'q') goto yy216;
4263            goto yy213;
4264        } else {
4265            if (yych <= 's') goto yy211;
4266            if (yych <= 't') goto yy214;
4267            goto yy216;
4268        }
4269    }
4270yy202:
4271    YYDEBUG(202, *YYCURSOR);
4272    yych = *++YYCURSOR;
4273    if (yych <= 'M') {
4274        if (yych <= ')') {
4275            if (yych <= '(') goto yy4;
4276            goto yy140;
4277        } else {
4278            if (yych <= '@') goto yy4;
4279            if (yych <= 'L') goto yy144;
4280        }
4281    } else {
4282        if (yych <= 'l') {
4283            if (yych <= 'Z') goto yy144;
4284            if (yych <= '`') goto yy4;
4285            goto yy144;
4286        } else {
4287            if (yych <= 'm') goto yy203;
4288            if (yych <= 'z') goto yy144;
4289            goto yy4;
4290        }
4291    }
4292yy203:
4293    YYDEBUG(203, *YYCURSOR);
4294    yych = *++YYCURSOR;
4295    if (yych <= 'B') {
4296        if (yych <= ')') {
4297            if (yych <= '(') goto yy4;
4298            goto yy140;
4299        } else {
4300            if (yych <= '@') goto yy4;
4301            if (yych <= 'A') goto yy145;
4302        }
4303    } else {
4304        if (yych <= 'a') {
4305            if (yych <= 'Z') goto yy145;
4306            if (yych <= '`') goto yy4;
4307            goto yy145;
4308        } else {
4309            if (yych <= 'b') goto yy204;
4310            if (yych <= 'z') goto yy145;
4311            goto yy4;
4312        }
4313    }
4314yy204:
4315    YYDEBUG(204, *YYCURSOR);
4316    yyaccept = 0;
4317    yych = *(YYMARKER = ++YYCURSOR);
4318    if (yych <= 'D') {
4319        if (yych == ')') goto yy140;
4320        goto yy4;
4321    } else {
4322        if (yych <= 'E') goto yy205;
4323        if (yych != 'e') goto yy4;
4324    }
4325yy205:
4326    YYDEBUG(205, *YYCURSOR);
4327    yych = *++YYCURSOR;
4328    if (yych == 'R') goto yy206;
4329    if (yych != 'r') goto yy57;
4330yy206:
4331    YYDEBUG(206, *YYCURSOR);
4332    yyaccept = 5;
4333    yych = *(YYMARKER = ++YYCURSOR);
4334    if (yych <= ' ') {
4335        if (yych == '\t') goto yy196;
4336        if (yych <= 0x1F) goto yy194;
4337        goto yy196;
4338    } else {
4339        if (yych <= '.') {
4340            if (yych <= ',') goto yy194;
4341            goto yy196;
4342        } else {
4343            if (yych <= '/') goto yy194;
4344            if (yych <= '9') goto yy196;
4345            goto yy194;
4346        }
4347    }
4348yy207:
4349    YYDEBUG(207, *YYCURSOR);
4350    yych = *++YYCURSOR;
4351    if (yych <= '/') {
4352        if (yych == '.') goto yy221;
4353        goto yy57;
4354    } else {
4355        if (yych <= '0') goto yy296;
4356        if (yych <= '9') goto yy297;
4357        if (yych <= ':') goto yy221;
4358        goto yy57;
4359    }
4360yy208:
4361    YYDEBUG(208, *YYCURSOR);
4362    yych = *++YYCURSOR;
4363    if (yych <= '/') {
4364        if (yych == '.') goto yy264;
4365        goto yy57;
4366    } else {
4367        if (yych <= '2') goto yy297;
4368        if (yych <= '9') goto yy296;
4369        if (yych <= ':') goto yy264;
4370        goto yy57;
4371    }
4372yy209:
4373    YYDEBUG(209, *YYCURSOR);
4374    yych = *++YYCURSOR;
4375    if (yych <= '/') {
4376        if (yych == '.') goto yy264;
4377        goto yy57;
4378    } else {
4379        if (yych <= '4') goto yy296;
4380        if (yych <= '9') goto yy293;
4381        if (yych <= ':') goto yy264;
4382        goto yy57;
4383    }
4384yy210:
4385    YYDEBUG(210, *YYCURSOR);
4386    yych = *++YYCURSOR;
4387    if (yych <= '/') {
4388        if (yych == '.') goto yy264;
4389        goto yy57;
4390    } else {
4391        if (yych <= '9') goto yy293;
4392        if (yych <= ':') goto yy264;
4393        goto yy57;
4394    }
4395yy211:
4396    YYDEBUG(211, *YYCURSOR);
4397    yyaccept = 6;
4398    yych = *(YYMARKER = ++YYCURSOR);
4399    goto yy216;
4400yy212:
4401    YYDEBUG(212, *YYCURSOR);
4402    yyaccept = 6;
4403    yych = *(YYMARKER = ++YYCURSOR);
4404    goto yy216;
4405yy213:
4406    YYDEBUG(213, *YYCURSOR);
4407    yyaccept = 6;
4408    yych = *(YYMARKER = ++YYCURSOR);
4409    goto yy216;
4410yy214:
4411    YYDEBUG(214, *YYCURSOR);
4412    yyaccept = 6;
4413    yych = *(YYMARKER = ++YYCURSOR);
4414    goto yy216;
4415yy215:
4416    YYDEBUG(215, *YYCURSOR);
4417    yyaccept = 6;
4418    YYMARKER = ++YYCURSOR;
4419    if ((YYLIMIT - YYCURSOR) < 18) YYFILL(18);
4420    yych = *YYCURSOR;
4421yy216:
4422    YYDEBUG(216, *YYCURSOR);
4423    if (yybm[0+yych] & 64) {
4424        goto yy215;
4425    }
4426    if (yych <= '2') {
4427        if (yych <= '/') goto yy199;
4428        if (yych <= '0') goto yy259;
4429        if (yych <= '1') goto yy260;
4430        goto yy261;
4431    } else {
4432        if (yych <= '9') goto yy262;
4433        if (yych != 'T') goto yy199;
4434    }
4435    YYDEBUG(217, *YYCURSOR);
4436    yych = *++YYCURSOR;
4437    if (yych <= '/') goto yy57;
4438    if (yych <= '1') goto yy218;
4439    if (yych <= '2') goto yy219;
4440    if (yych <= '9') goto yy220;
4441    goto yy57;
4442yy218:
4443    YYDEBUG(218, *YYCURSOR);
4444    yych = *++YYCURSOR;
4445    if (yych <= '/') {
4446        if (yych == '.') goto yy221;
4447        goto yy57;
4448    } else {
4449        if (yych <= '9') goto yy220;
4450        if (yych <= ':') goto yy221;
4451        goto yy57;
4452    }
4453yy219:
4454    YYDEBUG(219, *YYCURSOR);
4455    yych = *++YYCURSOR;
4456    if (yych <= '/') {
4457        if (yych == '.') goto yy221;
4458        goto yy57;
4459    } else {
4460        if (yych <= '4') goto yy220;
4461        if (yych == ':') goto yy221;
4462        goto yy57;
4463    }
4464yy220:
4465    YYDEBUG(220, *YYCURSOR);
4466    yych = *++YYCURSOR;
4467    if (yych == '.') goto yy221;
4468    if (yych != ':') goto yy57;
4469yy221:
4470    YYDEBUG(221, *YYCURSOR);
4471    yych = *++YYCURSOR;
4472    if (yych <= '/') goto yy57;
4473    if (yych <= '5') goto yy222;
4474    if (yych <= '9') goto yy224;
4475    goto yy57;
4476yy222:
4477    YYDEBUG(222, *YYCURSOR);
4478    yyaccept = 7;
4479    yych = *(YYMARKER = ++YYCURSOR);
4480    if (yych <= '/') {
4481        if (yych == '.') goto yy225;
4482    } else {
4483        if (yych <= '9') goto yy224;
4484        if (yych <= ':') goto yy225;
4485    }
4486yy223:
4487    YYDEBUG(223, *YYCURSOR);
4488#line 1719 "ext/date/lib/parse_date.re"
4489    {
4490        int tz_not_found;
4491        DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz");
4492        TIMELIB_INIT;
4493        TIMELIB_HAVE_DATE();
4494        s->time->m = timelib_get_month((char **) &ptr);
4495        s->time->d = timelib_get_nr((char **) &ptr, 2);
4496
4497        TIMELIB_HAVE_TIME();
4498        s->time->h = timelib_get_nr((char **) &ptr, 2);
4499        s->time->i = timelib_get_nr((char **) &ptr, 2);
4500        if (*ptr == ':') {
4501            s->time->s = timelib_get_nr((char **) &ptr, 2);
4502
4503            if (*ptr == '.') {
4504                s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
4505            }
4506        }
4507
4508        if (*ptr != '\0') {
4509            s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
4510            if (tz_not_found) {
4511                add_error(s, "The timezone could not be found in the database");
4512            }
4513        }
4514        TIMELIB_DEINIT;
4515        return TIMELIB_SHORTDATE_WITH_TIME;
4516    }
4517#line 4518 "ext/date/lib/parse_date.c"
4518yy224:
4519    YYDEBUG(224, *YYCURSOR);
4520    yyaccept = 7;
4521    yych = *(YYMARKER = ++YYCURSOR);
4522    if (yych == '.') goto yy225;
4523    if (yych != ':') goto yy223;
4524yy225:
4525    YYDEBUG(225, *YYCURSOR);
4526    yych = *++YYCURSOR;
4527    if (yych <= '/') goto yy57;
4528    if (yych <= '5') goto yy226;
4529    if (yych <= '6') goto yy227;
4530    if (yych <= '9') goto yy228;
4531    goto yy57;
4532yy226:
4533    YYDEBUG(226, *YYCURSOR);
4534    yych = *++YYCURSOR;
4535    if (yych <= '/') goto yy223;
4536    if (yych <= '9') goto yy229;
4537    goto yy223;
4538yy227:
4539    YYDEBUG(227, *YYCURSOR);
4540    yych = *++YYCURSOR;
4541    if (yych == '0') goto yy229;
4542    goto yy223;
4543yy228:
4544    YYDEBUG(228, *YYCURSOR);
4545    yych = *++YYCURSOR;
4546    goto yy223;
4547yy229:
4548    YYDEBUG(229, *YYCURSOR);
4549    yyaccept = 7;
4550    yych = *(YYMARKER = ++YYCURSOR);
4551    if (yych <= '*') {
4552        if (yych <= 0x1F) {
4553            if (yych == '\t') goto yy231;
4554            goto yy223;
4555        } else {
4556            if (yych <= ' ') goto yy231;
4557            if (yych == '(') goto yy231;
4558            goto yy223;
4559        }
4560    } else {
4561        if (yych <= '@') {
4562            if (yych == ',') goto yy223;
4563            if (yych <= '-') goto yy231;
4564            goto yy223;
4565        } else {
4566            if (yych <= 'Z') goto yy231;
4567            if (yych <= '`') goto yy223;
4568            if (yych <= 'z') goto yy231;
4569            goto yy223;
4570        }
4571    }
4572yy230:
4573    YYDEBUG(230, *YYCURSOR);
4574    ++YYCURSOR;
4575    if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
4576    yych = *YYCURSOR;
4577yy231:
4578    YYDEBUG(231, *YYCURSOR);
4579    if (yych <= '+') {
4580        if (yych <= ' ') {
4581            if (yych == '\t') goto yy230;
4582            if (yych <= 0x1F) goto yy57;
4583            goto yy230;
4584        } else {
4585            if (yych == '(') goto yy234;
4586            if (yych <= '*') goto yy57;
4587            goto yy233;
4588        }
4589    } else {
4590        if (yych <= 'F') {
4591            if (yych == '-') goto yy233;
4592            if (yych <= '@') goto yy57;
4593            goto yy235;
4594        } else {
4595            if (yych <= 'Z') {
4596                if (yych >= 'H') goto yy235;
4597            } else {
4598                if (yych <= '`') goto yy57;
4599                if (yych <= 'z') goto yy236;
4600                goto yy57;
4601            }
4602        }
4603    }
4604yy232:
4605    YYDEBUG(232, *YYCURSOR);
4606    yych = *++YYCURSOR;
4607    if (yych <= 'L') {
4608        if (yych == ')') goto yy228;
4609        if (yych <= '@') goto yy223;
4610        goto yy237;
4611    } else {
4612        if (yych <= 'Z') {
4613            if (yych <= 'M') goto yy257;
4614            goto yy237;
4615        } else {
4616            if (yych <= '`') goto yy223;
4617            if (yych <= 'z') goto yy242;
4618            goto yy223;
4619        }
4620    }
4621yy233:
4622    YYDEBUG(233, *YYCURSOR);
4623    yych = *++YYCURSOR;
4624    if (yych <= '/') goto yy57;
4625    if (yych <= '1') goto yy252;
4626    if (yych <= '2') goto yy253;
4627    if (yych <= '9') goto yy254;
4628    goto yy57;
4629yy234:
4630    YYDEBUG(234, *YYCURSOR);
4631    yych = *++YYCURSOR;
4632    if (yych <= '@') goto yy57;
4633    if (yych <= 'Z') goto yy236;
4634    if (yych <= '`') goto yy57;
4635    if (yych <= 'z') goto yy236;
4636    goto yy57;
4637yy235:
4638    YYDEBUG(235, *YYCURSOR);
4639    yych = *++YYCURSOR;
4640    if (yych <= '@') {
4641        if (yych == ')') goto yy228;
4642        goto yy223;
4643    } else {
4644        if (yych <= 'Z') goto yy237;
4645        if (yych <= '`') goto yy223;
4646        if (yych <= 'z') goto yy242;
4647        goto yy223;
4648    }
4649yy236:
4650    YYDEBUG(236, *YYCURSOR);
4651    yych = *++YYCURSOR;
4652    if (yych <= '@') {
4653        if (yych == ')') goto yy228;
4654        goto yy223;
4655    } else {
4656        if (yych <= 'Z') goto yy237;
4657        if (yych <= '`') goto yy223;
4658        if (yych >= '{') goto yy223;
4659    }
4660yy237:
4661    YYDEBUG(237, *YYCURSOR);
4662    yych = *++YYCURSOR;
4663    if (yych <= '@') {
4664        if (yych == ')') goto yy228;
4665        goto yy223;
4666    } else {
4667        if (yych <= 'Z') goto yy238;
4668        if (yych <= '`') goto yy223;
4669        if (yych >= '{') goto yy223;
4670    }
4671yy238:
4672    YYDEBUG(238, *YYCURSOR);
4673    yych = *++YYCURSOR;
4674    if (yych <= '@') {
4675        if (yych == ')') goto yy228;
4676        goto yy223;
4677    } else {
4678        if (yych <= 'Z') goto yy239;
4679        if (yych <= '`') goto yy223;
4680        if (yych >= '{') goto yy223;
4681    }
4682yy239:
4683    YYDEBUG(239, *YYCURSOR);
4684    yych = *++YYCURSOR;
4685    if (yych <= '@') {
4686        if (yych == ')') goto yy228;
4687        goto yy223;
4688    } else {
4689        if (yych <= 'Z') goto yy240;
4690        if (yych <= '`') goto yy223;
4691        if (yych >= '{') goto yy223;
4692    }
4693yy240:
4694    YYDEBUG(240, *YYCURSOR);
4695    yych = *++YYCURSOR;
4696    if (yych <= '@') {
4697        if (yych == ')') goto yy228;
4698        goto yy223;
4699    } else {
4700        if (yych <= 'Z') goto yy241;
4701        if (yych <= '`') goto yy223;
4702        if (yych >= '{') goto yy223;
4703    }
4704yy241:
4705    YYDEBUG(241, *YYCURSOR);
4706    yych = *++YYCURSOR;
4707    if (yych == ')') goto yy228;
4708    goto yy223;
4709yy242:
4710    YYDEBUG(242, *YYCURSOR);
4711    yyaccept = 7;
4712    yych = *(YYMARKER = ++YYCURSOR);
4713    if (yych <= '/') {
4714        if (yych <= ',') {
4715            if (yych == ')') goto yy228;
4716            goto yy223;
4717        } else {
4718            if (yych == '.') goto yy223;
4719            goto yy244;
4720        }
4721    } else {
4722        if (yych <= '^') {
4723            if (yych <= '@') goto yy223;
4724            if (yych <= 'Z') goto yy238;
4725            goto yy223;
4726        } else {
4727            if (yych <= '_') goto yy244;
4728            if (yych <= '`') goto yy223;
4729            if (yych >= '{') goto yy223;
4730        }
4731    }
4732yy243:
4733    YYDEBUG(243, *YYCURSOR);
4734    yyaccept = 7;
4735    yych = *(YYMARKER = ++YYCURSOR);
4736    if (yych <= '/') {
4737        if (yych <= ',') {
4738            if (yych == ')') goto yy228;
4739            goto yy223;
4740        } else {
4741            if (yych == '.') goto yy223;
4742        }
4743    } else {
4744        if (yych <= '^') {
4745            if (yych <= '@') goto yy223;
4746            if (yych <= 'Z') goto yy239;
4747            goto yy223;
4748        } else {
4749            if (yych <= '_') goto yy244;
4750            if (yych <= '`') goto yy223;
4751            if (yych <= 'z') goto yy247;
4752            goto yy223;
4753        }
4754    }
4755yy244:
4756    YYDEBUG(244, *YYCURSOR);
4757    ++YYCURSOR;
4758    if (YYLIMIT <= YYCURSOR) YYFILL(1);
4759    yych = *YYCURSOR;
4760    if (yych <= '@') goto yy57;
4761    if (yych <= 'Z') goto yy245;
4762    if (yych <= '`') goto yy57;
4763    if (yych >= '{') goto yy57;
4764yy245:
4765    YYDEBUG(245, *YYCURSOR);
4766    yyaccept = 7;
4767    YYMARKER = ++YYCURSOR;
4768    if (YYLIMIT <= YYCURSOR) YYFILL(1);
4769    yych = *YYCURSOR;
4770    YYDEBUG(246, *YYCURSOR);
4771    if (yych <= '@') {
4772        if (yych <= '-') {
4773            if (yych <= ',') goto yy223;
4774            goto yy244;
4775        } else {
4776            if (yych == '/') goto yy244;
4777            goto yy223;
4778        }
4779    } else {
4780        if (yych <= '_') {
4781            if (yych <= 'Z') goto yy245;
4782            if (yych <= '^') goto yy223;
4783            goto yy244;
4784        } else {
4785            if (yych <= '`') goto yy223;
4786            if (yych <= 'z') goto yy245;
4787            goto yy223;
4788        }
4789    }
4790yy247:
4791    YYDEBUG(247, *YYCURSOR);
4792    yyaccept = 7;
4793    yych = *(YYMARKER = ++YYCURSOR);
4794    if (yych <= '/') {
4795        if (yych <= ',') {
4796            if (yych == ')') goto yy228;
4797            goto yy223;
4798        } else {
4799            if (yych == '.') goto yy223;
4800            goto yy244;
4801        }
4802    } else {
4803        if (yych <= '^') {
4804            if (yych <= '@') goto yy223;
4805            if (yych <= 'Z') goto yy240;
4806            goto yy223;
4807        } else {
4808            if (yych <= '_') goto yy244;
4809            if (yych <= '`') goto yy223;
4810            if (yych >= '{') goto yy223;
4811        }
4812    }
4813    YYDEBUG(248, *YYCURSOR);
4814    yyaccept = 7;
4815    yych = *(YYMARKER = ++YYCURSOR);
4816    if (yych <= '/') {
4817        if (yych <= ',') {
4818            if (yych == ')') goto yy228;
4819            goto yy223;
4820        } else {
4821            if (yych == '.') goto yy223;
4822            goto yy244;
4823        }
4824    } else {
4825        if (yych <= '^') {
4826            if (yych <= '@') goto yy223;
4827            if (yych <= 'Z') goto yy241;
4828            goto yy223;
4829        } else {
4830            if (yych <= '_') goto yy244;
4831            if (yych <= '`') goto yy223;
4832            if (yych >= '{') goto yy223;
4833        }
4834    }
4835    YYDEBUG(249, *YYCURSOR);
4836    yyaccept = 7;
4837    yych = *(YYMARKER = ++YYCURSOR);
4838    if (yych <= '.') {
4839        if (yych <= ')') {
4840            if (yych <= '(') goto yy223;
4841            goto yy228;
4842        } else {
4843            if (yych == '-') goto yy244;
4844            goto yy223;
4845        }
4846    } else {
4847        if (yych <= '_') {
4848            if (yych <= '/') goto yy244;
4849            if (yych <= '^') goto yy223;
4850            goto yy244;
4851        } else {
4852            if (yych <= '`') goto yy223;
4853            if (yych >= '{') goto yy223;
4854        }
4855    }
4856yy250:
4857    YYDEBUG(250, *YYCURSOR);
4858    ++YYCURSOR;
4859    if (YYLIMIT <= YYCURSOR) YYFILL(1);
4860    yych = *YYCURSOR;
4861    YYDEBUG(251, *YYCURSOR);
4862    if (yych <= '/') {
4863        if (yych == '-') goto yy244;
4864        if (yych <= '.') goto yy57;
4865        goto yy244;
4866    } else {
4867        if (yych <= '_') {
4868            if (yych <= '^') goto yy57;
4869            goto yy244;
4870        } else {
4871            if (yych <= '`') goto yy57;
4872            if (yych <= 'z') goto yy250;
4873            goto yy57;
4874        }
4875    }
4876yy252:
4877    YYDEBUG(252, *YYCURSOR);
4878    yych = *++YYCURSOR;
4879    if (yych <= '/') goto yy223;
4880    if (yych <= '9') goto yy254;
4881    if (yych <= ':') goto yy255;
4882    goto yy223;
4883yy253:
4884    YYDEBUG(253, *YYCURSOR);
4885    yych = *++YYCURSOR;
4886    if (yych <= '5') {
4887        if (yych <= '/') goto yy223;
4888        if (yych >= '5') goto yy256;
4889    } else {
4890        if (yych <= '9') goto yy228;
4891        if (yych <= ':') goto yy255;
4892        goto yy223;
4893    }
4894yy254:
4895    YYDEBUG(254, *YYCURSOR);
4896    yych = *++YYCURSOR;
4897    if (yych <= '/') goto yy223;
4898    if (yych <= '5') goto yy256;
4899    if (yych <= '9') goto yy228;
4900    if (yych >= ';') goto yy223;
4901yy255:
4902    YYDEBUG(255, *YYCURSOR);
4903    yych = *++YYCURSOR;
4904    if (yych <= '/') goto yy223;
4905    if (yych <= '5') goto yy256;
4906    if (yych <= '9') goto yy228;
4907    goto yy223;
4908yy256:
4909    YYDEBUG(256, *YYCURSOR);
4910    yych = *++YYCURSOR;
4911    if (yych <= '/') goto yy223;
4912    if (yych <= '9') goto yy228;
4913    goto yy223;
4914yy257:
4915    YYDEBUG(257, *YYCURSOR);
4916    yych = *++YYCURSOR;
4917    if (yych <= 'S') {
4918        if (yych == ')') goto yy228;
4919        if (yych <= '@') goto yy223;
4920        goto yy238;
4921    } else {
4922        if (yych <= 'Z') {
4923            if (yych >= 'U') goto yy238;
4924        } else {
4925            if (yych <= '`') goto yy223;
4926            if (yych <= 'z') goto yy238;
4927            goto yy223;
4928        }
4929    }
4930    YYDEBUG(258, *YYCURSOR);
4931    yyaccept = 7;
4932    yych = *(YYMARKER = ++YYCURSOR);
4933    if (yych <= ',') {
4934        if (yych <= ')') {
4935            if (yych <= '(') goto yy223;
4936            goto yy228;
4937        } else {
4938            if (yych == '+') goto yy233;
4939            goto yy223;
4940        }
4941    } else {
4942        if (yych <= 'Z') {
4943            if (yych <= '-') goto yy233;
4944            if (yych <= '@') goto yy223;
4945            goto yy239;
4946        } else {
4947            if (yych <= '`') goto yy223;
4948            if (yych <= 'z') goto yy239;
4949            goto yy223;
4950        }
4951    }
4952yy259:
4953    YYDEBUG(259, *YYCURSOR);
4954    yyaccept = 6;
4955    yych = *(YYMARKER = ++YYCURSOR);
4956    if (yych <= '/') {
4957        if (yych == '.') goto yy221;
4958        goto yy199;
4959    } else {
4960        if (yych <= '0') goto yy291;
4961        if (yych <= '9') goto yy292;
4962        if (yych <= ':') goto yy221;
4963        goto yy199;
4964    }
4965yy260:
4966    YYDEBUG(260, *YYCURSOR);
4967    yyaccept = 6;
4968    yych = *(YYMARKER = ++YYCURSOR);
4969    if (yych <= '/') {
4970        if (yych == '.') goto yy264;
4971        goto yy199;
4972    } else {
4973        if (yych <= '2') goto yy292;
4974        if (yych <= '9') goto yy291;
4975        if (yych <= ':') goto yy264;
4976        goto yy199;
4977    }
4978yy261:
4979    YYDEBUG(261, *YYCURSOR);
4980    yyaccept = 6;
4981    yych = *(YYMARKER = ++YYCURSOR);
4982    if (yych <= '/') {
4983        if (yych == '.') goto yy264;
4984        goto yy199;
4985    } else {
4986        if (yych <= '4') goto yy291;
4987        if (yych <= '9') goto yy263;
4988        if (yych <= ':') goto yy264;
4989        goto yy199;
4990    }
4991yy262:
4992    YYDEBUG(262, *YYCURSOR);
4993    yyaccept = 6;
4994    yych = *(YYMARKER = ++YYCURSOR);
4995    if (yych <= '/') {
4996        if (yych == '.') goto yy264;
4997        goto yy199;
4998    } else {
4999        if (yych <= '9') goto yy263;
5000        if (yych <= ':') goto yy264;
5001        goto yy199;
5002    }
5003yy263:
5004    YYDEBUG(263, *YYCURSOR);
5005    yych = *++YYCURSOR;
5006    if (yych <= '/') goto yy199;
5007    if (yych <= '9') goto yy289;
5008    goto yy199;
5009yy264:
5010    YYDEBUG(264, *YYCURSOR);
5011    yych = *++YYCURSOR;
5012    if (yych <= '/') goto yy57;
5013    if (yych <= '5') goto yy265;
5014    if (yych <= '9') goto yy266;
5015    goto yy57;
5016yy265:
5017    YYDEBUG(265, *YYCURSOR);
5018    yyaccept = 7;
5019    yych = *(YYMARKER = ++YYCURSOR);
5020    if (yych <= '/') {
5021        if (yych == '.') goto yy267;
5022        goto yy223;
5023    } else {
5024        if (yych <= '9') goto yy282;
5025        if (yych <= ':') goto yy267;
5026        goto yy223;
5027    }
5028yy266:
5029    YYDEBUG(266, *YYCURSOR);
5030    yyaccept = 7;
5031    yych = *(YYMARKER = ++YYCURSOR);
5032    if (yych == '.') goto yy267;
5033    if (yych != ':') goto yy223;
5034yy267:
5035    YYDEBUG(267, *YYCURSOR);
5036    yych = *++YYCURSOR;
5037    if (yych <= '/') goto yy57;
5038    if (yych <= '5') goto yy268;
5039    if (yych <= '6') goto yy269;
5040    if (yych <= '9') goto yy228;
5041    goto yy57;
5042yy268:
5043    YYDEBUG(268, *YYCURSOR);
5044    yych = *++YYCURSOR;
5045    if (yych <= '/') goto yy223;
5046    if (yych <= '9') goto yy270;
5047    goto yy223;
5048yy269:
5049    YYDEBUG(269, *YYCURSOR);
5050    yych = *++YYCURSOR;
5051    if (yych != '0') goto yy223;
5052yy270:
5053    YYDEBUG(270, *YYCURSOR);
5054    yyaccept = 7;
5055    yych = *(YYMARKER = ++YYCURSOR);
5056    if (yych <= '*') {
5057        if (yych <= 0x1F) {
5058            if (yych == '\t') goto yy272;
5059            goto yy223;
5060        } else {
5061            if (yych <= ' ') goto yy272;
5062            if (yych == '(') goto yy272;
5063            goto yy223;
5064        }
5065    } else {
5066        if (yych <= '@') {
5067            if (yych == ',') goto yy223;
5068            if (yych <= '-') goto yy272;
5069            goto yy223;
5070        } else {
5071            if (yych <= 'Z') goto yy272;
5072            if (yych <= '`') goto yy223;
5073            if (yych <= 'z') goto yy272;
5074            goto yy223;
5075        }
5076    }
5077yy271:
5078    YYDEBUG(271, *YYCURSOR);
5079    ++YYCURSOR;
5080    if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
5081    yych = *YYCURSOR;
5082yy272:
5083    YYDEBUG(272, *YYCURSOR);
5084    if (yych <= '@') {
5085        if (yych <= '\'') {
5086            if (yych <= '\t') {
5087                if (yych <= 0x08) goto yy57;
5088                goto yy271;
5089            } else {
5090                if (yych == ' ') goto yy271;
5091                goto yy57;
5092            }
5093        } else {
5094            if (yych <= '+') {
5095                if (yych <= '(') goto yy234;
5096                if (yych <= '*') goto yy57;
5097                goto yy233;
5098            } else {
5099                if (yych == '-') goto yy233;
5100                goto yy57;
5101            }
5102        }
5103    } else {
5104        if (yych <= 'Z') {
5105            if (yych <= 'G') {
5106                if (yych <= 'A') goto yy273;
5107                if (yych <= 'F') goto yy235;
5108                goto yy232;
5109            } else {
5110                if (yych != 'P') goto yy235;
5111            }
5112        } else {
5113            if (yych <= 'o') {
5114                if (yych <= '`') goto yy57;
5115                if (yych <= 'a') goto yy274;
5116                goto yy236;
5117            } else {
5118                if (yych <= 'p') goto yy274;
5119                if (yych <= 'z') goto yy236;
5120                goto yy57;
5121            }
5122        }
5123    }
5124yy273:
5125    YYDEBUG(273, *YYCURSOR);
5126    yyaccept = 7;
5127    yych = *(YYMARKER = ++YYCURSOR);
5128    if (yych <= 'L') {
5129        if (yych <= '-') {
5130            if (yych == ')') goto yy228;
5131            goto yy223;
5132        } else {
5133            if (yych <= '.') goto yy275;
5134            if (yych <= '@') goto yy223;
5135            goto yy237;
5136        }
5137    } else {
5138        if (yych <= '`') {
5139            if (yych <= 'M') goto yy276;
5140            if (yych <= 'Z') goto yy237;
5141            goto yy223;
5142        } else {
5143            if (yych == 'm') goto yy281;
5144            if (yych <= 'z') goto yy242;
5145            goto yy223;
5146        }
5147    }
5148yy274:
5149    YYDEBUG(274, *YYCURSOR);
5150    yyaccept = 7;
5151    yych = *(YYMARKER = ++YYCURSOR);
5152    if (yych <= 'L') {
5153        if (yych <= '-') {
5154            if (yych == ')') goto yy228;
5155            goto yy223;
5156        } else {
5157            if (yych <= '.') goto yy275;
5158            if (yych <= '@') goto yy223;
5159            goto yy237;
5160        }
5161    } else {
5162        if (yych <= '`') {
5163            if (yych <= 'M') goto yy276;
5164            if (yych <= 'Z') goto yy237;
5165            goto yy223;
5166        } else {
5167            if (yych == 'm') goto yy276;
5168            if (yych <= 'z') goto yy237;
5169            goto yy223;
5170        }
5171    }
5172yy275:
5173    YYDEBUG(275, *YYCURSOR);
5174    yych = *++YYCURSOR;
5175    if (yych == 'M') goto yy280;
5176    if (yych == 'm') goto yy280;
5177    goto yy57;
5178yy276:
5179    YYDEBUG(276, *YYCURSOR);
5180    yyaccept = 7;
5181    yych = *(YYMARKER = ++YYCURSOR);
5182    if (yych <= ')') {
5183        if (yych <= '\t') {
5184            if (yych <= 0x00) goto yy278;
5185            if (yych <= 0x08) goto yy223;
5186            goto yy278;
5187        } else {
5188            if (yych == ' ') goto yy278;
5189            if (yych <= '(') goto yy223;
5190            goto yy228;
5191        }
5192    } else {
5193        if (yych <= '@') {
5194            if (yych != '.') goto yy223;
5195        } else {
5196            if (yych <= 'Z') goto yy238;
5197            if (yych <= '`') goto yy223;
5198            if (yych <= 'z') goto yy238;
5199            goto yy223;
5200        }
5201    }
5202yy277:
5203    YYDEBUG(277, *YYCURSOR);
5204    yych = *++YYCURSOR;
5205    if (yych <= '\t') {
5206        if (yych <= 0x00) goto yy278;
5207        if (yych <= 0x08) goto yy57;
5208    } else {
5209        if (yych != ' ') goto yy57;
5210    }
5211yy278:
5212    YYDEBUG(278, *YYCURSOR);
5213    ++YYCURSOR;
5214    YYDEBUG(279, *YYCURSOR);
5215#line 1695 "ext/date/lib/parse_date.re"
5216    {
5217        DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12");
5218        TIMELIB_INIT;
5219        TIMELIB_HAVE_DATE();
5220        s->time->m = timelib_get_month((char **) &ptr);
5221        s->time->d = timelib_get_nr((char **) &ptr, 2);
5222
5223        TIMELIB_HAVE_TIME();
5224        s->time->h = timelib_get_nr((char **) &ptr, 2);
5225        s->time->i = timelib_get_nr((char **) &ptr, 2);
5226        if (*ptr == ':' || *ptr == '.') {
5227            s->time->s = timelib_get_nr((char **) &ptr, 2);
5228
5229            if (*ptr == '.') {
5230                s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
5231            }
5232        }
5233
5234        s->time->h += timelib_meridian((char **) &ptr, s->time->h);
5235        TIMELIB_DEINIT;
5236        return TIMELIB_SHORTDATE_WITH_TIME;
5237    }
5238#line 5239 "ext/date/lib/parse_date.c"
5239yy280:
5240    YYDEBUG(280, *YYCURSOR);
5241    yych = *++YYCURSOR;
5242    if (yych <= 0x1F) {
5243        if (yych <= 0x00) goto yy278;
5244        if (yych == '\t') goto yy278;
5245        goto yy57;
5246    } else {
5247        if (yych <= ' ') goto yy278;
5248        if (yych == '.') goto yy277;
5249        goto yy57;
5250    }
5251yy281:
5252    YYDEBUG(281, *YYCURSOR);
5253    yyaccept = 7;
5254    yych = *(YYMARKER = ++YYCURSOR);
5255    if (yych <= '-') {
5256        if (yych <= 0x1F) {
5257            if (yych <= 0x00) goto yy278;
5258            if (yych == '\t') goto yy278;
5259            goto yy223;
5260        } else {
5261            if (yych <= '(') {
5262                if (yych <= ' ') goto yy278;
5263                goto yy223;
5264            } else {
5265                if (yych <= ')') goto yy228;
5266                if (yych <= ',') goto yy223;
5267                goto yy244;
5268            }
5269        }
5270    } else {
5271        if (yych <= 'Z') {
5272            if (yych <= '.') goto yy277;
5273            if (yych <= '/') goto yy244;
5274            if (yych <= '@') goto yy223;
5275            goto yy238;
5276        } else {
5277            if (yych <= '_') {
5278                if (yych <= '^') goto yy223;
5279                goto yy244;
5280            } else {
5281                if (yych <= '`') goto yy223;
5282                if (yych <= 'z') goto yy243;
5283                goto yy223;
5284            }
5285        }
5286    }
5287yy282:
5288    YYDEBUG(282, *YYCURSOR);
5289    yyaccept = 7;
5290    yych = *(YYMARKER = ++YYCURSOR);
5291    if (yych <= ':') {
5292        if (yych <= ' ') {
5293            if (yych == '\t') goto yy283;
5294            if (yych <= 0x1F) goto yy223;
5295        } else {
5296            if (yych == '.') goto yy267;
5297            if (yych <= '9') goto yy223;
5298            goto yy267;
5299        }
5300    } else {
5301        if (yych <= 'P') {
5302            if (yych == 'A') goto yy285;
5303            if (yych <= 'O') goto yy223;
5304            goto yy285;
5305        } else {
5306            if (yych <= 'a') {
5307                if (yych <= '`') goto yy223;
5308                goto yy285;
5309            } else {
5310                if (yych == 'p') goto yy285;
5311                goto yy223;
5312            }
5313        }
5314    }
5315yy283:
5316    YYDEBUG(283, *YYCURSOR);
5317    ++YYCURSOR;
5318    if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
5319    yych = *YYCURSOR;
5320    YYDEBUG(284, *YYCURSOR);
5321    if (yych <= 'A') {
5322        if (yych <= 0x1F) {
5323            if (yych == '\t') goto yy283;
5324            goto yy57;
5325        } else {
5326            if (yych <= ' ') goto yy283;
5327            if (yych <= '@') goto yy57;
5328        }
5329    } else {
5330        if (yych <= '`') {
5331            if (yych != 'P') goto yy57;
5332        } else {
5333            if (yych <= 'a') goto yy285;
5334            if (yych != 'p') goto yy57;
5335        }
5336    }
5337yy285:
5338    YYDEBUG(285, *YYCURSOR);
5339    yych = *++YYCURSOR;
5340    if (yych <= 'L') {
5341        if (yych != '.') goto yy57;
5342    } else {
5343        if (yych <= 'M') goto yy287;
5344        if (yych == 'm') goto yy287;
5345        goto yy57;
5346    }
5347yy286:
5348    YYDEBUG(286, *YYCURSOR);
5349    yych = *++YYCURSOR;
5350    if (yych == 'M') goto yy287;
5351    if (yych != 'm') goto yy57;
5352yy287:
5353    YYDEBUG(287, *YYCURSOR);
5354    yych = *++YYCURSOR;
5355    if (yych <= 0x1F) {
5356        if (yych <= 0x00) goto yy278;
5357        if (yych == '\t') goto yy278;
5358        goto yy57;
5359    } else {
5360        if (yych <= ' ') goto yy278;
5361        if (yych != '.') goto yy57;
5362    }
5363yy288:
5364    YYDEBUG(288, *YYCURSOR);
5365    yych = *++YYCURSOR;
5366    if (yych <= '\t') {
5367        if (yych <= 0x00) goto yy278;
5368        if (yych <= 0x08) goto yy57;
5369        goto yy278;
5370    } else {
5371        if (yych == ' ') goto yy278;
5372        goto yy57;
5373    }
5374yy289:
5375    YYDEBUG(289, *YYCURSOR);
5376    yych = *++YYCURSOR;
5377    if (yych <= '/') goto yy199;
5378    if (yych >= ':') goto yy199;
5379    YYDEBUG(290, *YYCURSOR);
5380    yych = *++YYCURSOR;
5381    goto yy199;
5382yy291:
5383    YYDEBUG(291, *YYCURSOR);
5384    yyaccept = 6;
5385    yych = *(YYMARKER = ++YYCURSOR);
5386    if (yych <= '/') {
5387        if (yych == '.') goto yy221;
5388        goto yy199;
5389    } else {
5390        if (yych <= '9') goto yy289;
5391        if (yych <= ':') goto yy221;
5392        goto yy199;
5393    }
5394yy292:
5395    YYDEBUG(292, *YYCURSOR);
5396    yyaccept = 6;
5397    yych = *(YYMARKER = ++YYCURSOR);
5398    if (yych <= '/') {
5399        if (yych == '.') goto yy264;
5400        goto yy199;
5401    } else {
5402        if (yych <= '9') goto yy289;
5403        if (yych <= ':') goto yy264;
5404        goto yy199;
5405    }
5406yy293:
5407    YYDEBUG(293, *YYCURSOR);
5408    yych = *++YYCURSOR;
5409    if (yych <= '/') goto yy57;
5410    if (yych >= ':') goto yy57;
5411yy294:
5412    YYDEBUG(294, *YYCURSOR);
5413    ++YYCURSOR;
5414yy295:
5415    YYDEBUG(295, *YYCURSOR);
5416#line 1389 "ext/date/lib/parse_date.re"
5417    {
5418        int length = 0;
5419        DEBUG_OUTPUT("datenoday");
5420        TIMELIB_INIT;
5421        TIMELIB_HAVE_DATE();
5422        s->time->m = timelib_get_month((char **) &ptr);
5423        s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
5424        s->time->d = 1;
5425        TIMELIB_PROCESS_YEAR(s->time->y, length);
5426        TIMELIB_DEINIT;
5427        return TIMELIB_DATE_NO_DAY;
5428    }
5429#line 5430 "ext/date/lib/parse_date.c"
5430yy296:
5431    YYDEBUG(296, *YYCURSOR);
5432    yych = *++YYCURSOR;
5433    if (yych <= '/') {
5434        if (yych == '.') goto yy221;
5435        goto yy57;
5436    } else {
5437        if (yych <= '9') goto yy294;
5438        if (yych <= ':') goto yy221;
5439        goto yy57;
5440    }
5441yy297:
5442    YYDEBUG(297, *YYCURSOR);
5443    yych = *++YYCURSOR;
5444    if (yych <= '/') {
5445        if (yych == '.') goto yy264;
5446        goto yy57;
5447    } else {
5448        if (yych <= '9') goto yy294;
5449        if (yych <= ':') goto yy264;
5450        goto yy57;
5451    }
5452yy298:
5453    YYDEBUG(298, *YYCURSOR);
5454    yyaccept = 6;
5455    yych = *(YYMARKER = ++YYCURSOR);
5456    if (yych <= '9') {
5457        if (yych <= '/') {
5458            if (yych == '.') goto yy331;
5459            goto yy216;
5460        } else {
5461            if (yych <= '0') goto yy332;
5462            if (yych <= '1') goto yy302;
5463            if (yych <= '2') goto yy303;
5464            goto yy297;
5465        }
5466    } else {
5467        if (yych <= 'q') {
5468            if (yych <= ':') goto yy221;
5469            if (yych == 'n') goto yy212;
5470            goto yy216;
5471        } else {
5472            if (yych <= 'r') goto yy213;
5473            if (yych <= 's') goto yy211;
5474            if (yych <= 't') goto yy214;
5475            goto yy216;
5476        }
5477    }
5478yy299:
5479    YYDEBUG(299, *YYCURSOR);
5480    yyaccept = 6;
5481    yych = *(YYMARKER = ++YYCURSOR);
5482    if (yych <= '9') {
5483        if (yych <= '/') {
5484            if (yych != '.') goto yy216;
5485        } else {
5486            if (yych <= '0') goto yy301;
5487            if (yych <= '1') goto yy302;
5488            if (yych <= '2') goto yy303;
5489            goto yy297;
5490        }
5491    } else {
5492        if (yych <= 'q') {
5493            if (yych <= ':') goto yy264;
5494            if (yych == 'n') goto yy212;
5495            goto yy216;
5496        } else {
5497            if (yych <= 'r') goto yy213;
5498            if (yych <= 's') goto yy211;
5499            if (yych <= 't') goto yy214;
5500            goto yy216;
5501        }
5502    }
5503yy300:
5504    YYDEBUG(300, *YYCURSOR);
5505    yyaccept = 6;
5506    yych = *(YYMARKER = ++YYCURSOR);
5507    if (yych <= '1') {
5508        if (yych <= '/') goto yy216;
5509        if (yych <= '0') goto yy306;
5510        goto yy307;
5511    } else {
5512        if (yych <= '2') goto yy308;
5513        if (yych <= '5') goto yy309;
5514        if (yych <= '9') goto yy310;
5515        goto yy216;
5516    }
5517yy301:
5518    YYDEBUG(301, *YYCURSOR);
5519    yych = *++YYCURSOR;
5520    if (yych <= '/') {
5521        if (yych == '.') goto yy264;
5522        goto yy57;
5523    } else {
5524        if (yych <= '0') goto yy304;
5525        if (yych <= '9') goto yy305;
5526        if (yych <= ':') goto yy264;
5527        goto yy57;
5528    }
5529yy302:
5530    YYDEBUG(302, *YYCURSOR);
5531    yych = *++YYCURSOR;
5532    if (yych <= '/') {
5533        if (yych == '.') goto yy264;
5534        goto yy57;
5535    } else {
5536        if (yych <= '2') goto yy305;
5537        if (yych <= '9') goto yy304;
5538        if (yych <= ':') goto yy264;
5539        goto yy57;
5540    }
5541yy303:
5542    YYDEBUG(303, *YYCURSOR);
5543    yych = *++YYCURSOR;
5544    if (yych <= '/') {
5545        if (yych == '.') goto yy264;
5546        goto yy57;
5547    } else {
5548        if (yych <= '4') goto yy304;
5549        if (yych <= '9') goto yy294;
5550        if (yych <= ':') goto yy264;
5551        goto yy57;
5552    }
5553yy304:
5554    YYDEBUG(304, *YYCURSOR);
5555    yyaccept = 8;
5556    yych = *(YYMARKER = ++YYCURSOR);
5557    if (yych == '.') goto yy221;
5558    if (yych == ':') goto yy221;
5559    goto yy295;
5560yy305:
5561    YYDEBUG(305, *YYCURSOR);
5562    yyaccept = 8;
5563    yych = *(YYMARKER = ++YYCURSOR);
5564    if (yych == '.') goto yy264;
5565    if (yych == ':') goto yy264;
5566    goto yy295;
5567yy306:
5568    YYDEBUG(306, *YYCURSOR);
5569    yyaccept = 6;
5570    yych = *(YYMARKER = ++YYCURSOR);
5571    if (yych <= '/') {
5572        if (yych == '.') goto yy326;
5573        goto yy199;
5574    } else {
5575        if (yych <= '0') goto yy325;
5576        if (yych <= '9') goto yy330;
5577        if (yych <= ':') goto yy326;
5578        goto yy199;
5579    }
5580yy307:
5581    YYDEBUG(307, *YYCURSOR);
5582    yyaccept = 6;
5583    yych = *(YYMARKER = ++YYCURSOR);
5584    if (yych <= '/') {
5585        if (yych == '.') goto yy311;
5586        goto yy199;
5587    } else {
5588        if (yych <= '2') goto yy330;
5589        if (yych <= '9') goto yy325;
5590        if (yych <= ':') goto yy311;
5591        goto yy199;
5592    }
5593yy308:
5594    YYDEBUG(308, *YYCURSOR);
5595    yyaccept = 6;
5596    yych = *(YYMARKER = ++YYCURSOR);
5597    if (yych <= '/') {
5598        if (yych == '.') goto yy311;
5599        goto yy199;
5600    } else {
5601        if (yych <= '4') goto yy325;
5602        if (yych <= '9') goto yy324;
5603        if (yych <= ':') goto yy311;
5604        goto yy199;
5605    }
5606yy309:
5607    YYDEBUG(309, *YYCURSOR);
5608    yyaccept = 6;
5609    yych = *(YYMARKER = ++YYCURSOR);
5610    if (yych <= '/') {
5611        if (yych == '.') goto yy311;
5612        goto yy199;
5613    } else {
5614        if (yych <= '9') goto yy324;
5615        if (yych <= ':') goto yy311;
5616        goto yy199;
5617    }
5618yy310:
5619    YYDEBUG(310, *YYCURSOR);
5620    yyaccept = 6;
5621    yych = *(YYMARKER = ++YYCURSOR);
5622    if (yych <= '/') {
5623        if (yych != '.') goto yy199;
5624    } else {
5625        if (yych <= '9') goto yy263;
5626        if (yych >= ';') goto yy199;
5627    }
5628yy311:
5629    YYDEBUG(311, *YYCURSOR);
5630    yych = *++YYCURSOR;
5631    if (yych <= '/') goto yy57;
5632    if (yych <= '5') goto yy312;
5633    if (yych <= '6') goto yy313;
5634    if (yych <= '9') goto yy266;
5635    goto yy57;
5636yy312:
5637    YYDEBUG(312, *YYCURSOR);
5638    yyaccept = 7;
5639    yych = *(YYMARKER = ++YYCURSOR);
5640    if (yych <= '/') {
5641        if (yych == '.') goto yy267;
5642        goto yy223;
5643    } else {
5644        if (yych <= '9') goto yy314;
5645        if (yych <= ':') goto yy267;
5646        goto yy223;
5647    }
5648yy313:
5649    YYDEBUG(313, *YYCURSOR);
5650    yyaccept = 7;
5651    yych = *(YYMARKER = ++YYCURSOR);
5652    if (yych <= '/') {
5653        if (yych == '.') goto yy267;
5654        goto yy223;
5655    } else {
5656        if (yych <= '0') goto yy270;
5657        if (yych == ':') goto yy267;
5658        goto yy223;
5659    }
5660yy314:
5661    YYDEBUG(314, *YYCURSOR);
5662    yyaccept = 7;
5663    yych = *(YYMARKER = ++YYCURSOR);
5664    if (yych <= ',') {
5665        if (yych <= ' ') {
5666            if (yych == '\t') goto yy316;
5667            if (yych <= 0x1F) goto yy223;
5668            goto yy316;
5669        } else {
5670            if (yych <= '(') {
5671                if (yych <= '\'') goto yy223;
5672                goto yy316;
5673            } else {
5674                if (yych == '+') goto yy316;
5675                goto yy223;
5676            }
5677        }
5678    } else {
5679        if (yych <= ':') {
5680            if (yych <= '-') goto yy316;
5681            if (yych <= '.') goto yy267;
5682            if (yych <= '9') goto yy223;
5683            goto yy267;
5684        } else {
5685            if (yych <= 'Z') {
5686                if (yych <= '@') goto yy223;
5687                goto yy316;
5688            } else {
5689                if (yych <= '`') goto yy223;
5690                if (yych <= 'z') goto yy316;
5691                goto yy223;
5692            }
5693        }
5694    }
5695yy315:
5696    YYDEBUG(315, *YYCURSOR);
5697    ++YYCURSOR;
5698    if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
5699    yych = *YYCURSOR;
5700yy316:
5701    YYDEBUG(316, *YYCURSOR);
5702    if (yych <= '@') {
5703        if (yych <= '\'') {
5704            if (yych <= '\t') {
5705                if (yych <= 0x08) goto yy57;
5706                goto yy315;
5707            } else {
5708                if (yych == ' ') goto yy315;
5709                goto yy57;
5710            }
5711        } else {
5712            if (yych <= '+') {
5713                if (yych <= '(') goto yy234;
5714                if (yych <= '*') goto yy57;
5715                goto yy233;
5716            } else {
5717                if (yych == '-') goto yy233;
5718                goto yy57;
5719            }
5720        }
5721    } else {
5722        if (yych <= 'Z') {
5723            if (yych <= 'G') {
5724                if (yych <= 'A') goto yy317;
5725                if (yych <= 'F') goto yy235;
5726                goto yy232;
5727            } else {
5728                if (yych != 'P') goto yy235;
5729            }
5730        } else {
5731            if (yych <= 'o') {
5732                if (yych <= '`') goto yy57;
5733                if (yych <= 'a') goto yy318;
5734                goto yy236;
5735            } else {
5736                if (yych <= 'p') goto yy318;
5737                if (yych <= 'z') goto yy236;
5738                goto yy57;
5739            }
5740        }
5741    }
5742yy317:
5743    YYDEBUG(317, *YYCURSOR);
5744    yyaccept = 7;
5745    yych = *(YYMARKER = ++YYCURSOR);
5746    if (yych <= 'L') {
5747        if (yych <= '-') {
5748            if (yych == ')') goto yy228;
5749            goto yy223;
5750        } else {
5751            if (yych <= '.') goto yy320;
5752            if (yych <= '@') goto yy223;
5753            goto yy237;
5754        }
5755    } else {
5756        if (yych <= '`') {
5757            if (yych <= 'M') goto yy319;
5758            if (yych <= 'Z') goto yy237;
5759            goto yy223;
5760        } else {
5761            if (yych == 'm') goto yy323;
5762            if (yych <= 'z') goto yy242;
5763            goto yy223;
5764        }
5765    }
5766yy318:
5767    YYDEBUG(318, *YYCURSOR);
5768    yyaccept = 7;
5769    yych = *(YYMARKER = ++YYCURSOR);
5770    if (yych <= 'L') {
5771        if (yych <= '-') {
5772            if (yych == ')') goto yy228;
5773            goto yy223;
5774        } else {
5775            if (yych <= '.') goto yy320;
5776            if (yych <= '@') goto yy223;
5777            goto yy237;
5778        }
5779    } else {
5780        if (yych <= '`') {
5781            if (yych <= 'M') goto yy319;
5782            if (yych <= 'Z') goto yy237;
5783            goto yy223;
5784        } else {
5785            if (yych == 'm') goto yy319;
5786            if (yych <= 'z') goto yy237;
5787            goto yy223;
5788        }
5789    }
5790yy319:
5791    YYDEBUG(319, *YYCURSOR);
5792    yyaccept = 7;
5793    yych = *(YYMARKER = ++YYCURSOR);
5794    if (yych <= ')') {
5795        if (yych <= '\t') {
5796            if (yych <= 0x00) goto yy278;
5797            if (yych <= 0x08) goto yy223;
5798            goto yy278;
5799        } else {
5800            if (yych == ' ') goto yy278;
5801            if (yych <= '(') goto yy223;
5802            goto yy228;
5803        }
5804    } else {
5805        if (yych <= '@') {
5806            if (yych == '.') goto yy322;
5807            goto yy223;
5808        } else {
5809            if (yych <= 'Z') goto yy238;
5810            if (yych <= '`') goto yy223;
5811            if (yych <= 'z') goto yy238;
5812            goto yy223;
5813        }
5814    }
5815yy320:
5816    YYDEBUG(320, *YYCURSOR);
5817    yych = *++YYCURSOR;
5818    if (yych == 'M') goto yy321;
5819    if (yych != 'm') goto yy57;
5820yy321:
5821    YYDEBUG(321, *YYCURSOR);
5822    yych = *++YYCURSOR;
5823    if (yych <= 0x1F) {
5824        if (yych <= 0x00) goto yy278;
5825        if (yych == '\t') goto yy278;
5826        goto yy57;
5827    } else {
5828        if (yych <= ' ') goto yy278;
5829        if (yych != '.') goto yy57;
5830    }
5831yy322:
5832    YYDEBUG(322, *YYCURSOR);
5833    yych = *++YYCURSOR;
5834    if (yych <= '\t') {
5835        if (yych <= 0x00) goto yy278;
5836        if (yych <= 0x08) goto yy57;
5837        goto yy278;
5838    } else {
5839        if (yych == ' ') goto yy278;
5840        goto yy57;
5841    }
5842yy323:
5843    YYDEBUG(323, *YYCURSOR);
5844    yyaccept = 7;
5845    yych = *(YYMARKER = ++YYCURSOR);
5846    if (yych <= '-') {
5847        if (yych <= 0x1F) {
5848            if (yych <= 0x00) goto yy278;
5849            if (yych == '\t') goto yy278;
5850            goto yy223;
5851        } else {
5852            if (yych <= '(') {
5853                if (yych <= ' ') goto yy278;
5854                goto yy223;
5855            } else {
5856                if (yych <= ')') goto yy228;
5857                if (yych <= ',') goto yy223;
5858                goto yy244;
5859            }
5860        }
5861    } else {
5862        if (yych <= 'Z') {
5863            if (yych <= '.') goto yy322;
5864            if (yych <= '/') goto yy244;
5865            if (yych <= '@') goto yy223;
5866            goto yy238;
5867        } else {
5868            if (yych <= '_') {
5869                if (yych <= '^') goto yy223;
5870                goto yy244;
5871            } else {
5872                if (yych <= '`') goto yy223;
5873                if (yych <= 'z') goto yy243;
5874                goto yy223;
5875            }
5876        }
5877    }
5878yy324:
5879    YYDEBUG(324, *YYCURSOR);
5880    yyaccept = 6;
5881    yych = *(YYMARKER = ++YYCURSOR);
5882    if (yych <= ':') {
5883        if (yych <= ' ') {
5884            if (yych == '\t') goto yy283;
5885            if (yych <= 0x1F) goto yy199;
5886            goto yy283;
5887        } else {
5888            if (yych <= '.') {
5889                if (yych <= '-') goto yy199;
5890                goto yy267;
5891            } else {
5892                if (yych <= '/') goto yy199;
5893                if (yych <= '9') goto yy289;
5894                goto yy267;
5895            }
5896        }
5897    } else {
5898        if (yych <= 'P') {
5899            if (yych == 'A') goto yy285;
5900            if (yych <= 'O') goto yy199;
5901            goto yy285;
5902        } else {
5903            if (yych <= 'a') {
5904                if (yych <= '`') goto yy199;
5905                goto yy285;
5906            } else {
5907                if (yych == 'p') goto yy285;
5908                goto yy199;
5909            }
5910        }
5911    }
5912yy325:
5913    YYDEBUG(325, *YYCURSOR);
5914    yyaccept = 6;
5915    yych = *(YYMARKER = ++YYCURSOR);
5916    if (yych <= ':') {
5917        if (yych <= ' ') {
5918            if (yych == '\t') goto yy283;
5919            if (yych <= 0x1F) goto yy199;
5920            goto yy283;
5921        } else {
5922            if (yych <= '.') {
5923                if (yych <= '-') goto yy199;
5924            } else {
5925                if (yych <= '/') goto yy199;
5926                if (yych <= '9') goto yy289;
5927            }
5928        }
5929    } else {
5930        if (yych <= 'P') {
5931            if (yych == 'A') goto yy285;
5932            if (yych <= 'O') goto yy199;
5933            goto yy285;
5934        } else {
5935            if (yych <= 'a') {
5936                if (yych <= '`') goto yy199;
5937                goto yy285;
5938            } else {
5939                if (yych == 'p') goto yy285;
5940                goto yy199;
5941            }
5942        }
5943    }
5944yy326:
5945    YYDEBUG(326, *YYCURSOR);
5946    yych = *++YYCURSOR;
5947    if (yych <= '/') goto yy57;
5948    if (yych <= '5') goto yy327;
5949    if (yych <= '6') goto yy328;
5950    if (yych <= '9') goto yy224;
5951    goto yy57;
5952yy327:
5953    YYDEBUG(327, *YYCURSOR);
5954    yyaccept = 7;
5955    yych = *(YYMARKER = ++YYCURSOR);
5956    if (yych <= '/') {
5957        if (yych == '.') goto yy225;
5958        goto yy223;
5959    } else {
5960        if (yych <= '9') goto yy329;
5961        if (yych <= ':') goto yy225;
5962        goto yy223;
5963    }
5964yy328:
5965    YYDEBUG(328, *YYCURSOR);
5966    yyaccept = 7;
5967    yych = *(YYMARKER = ++YYCURSOR);
5968    if (yych <= '/') {
5969        if (yych == '.') goto yy225;
5970        goto yy223;
5971    } else {
5972        if (yych <= '0') goto yy270;
5973        if (yych == ':') goto yy225;
5974        goto yy223;
5975    }
5976yy329:
5977    YYDEBUG(329, *YYCURSOR);
5978    yyaccept = 7;
5979    yych = *(YYMARKER = ++YYCURSOR);
5980    if (yych <= ',') {
5981        if (yych <= ' ') {
5982            if (yych == '\t') goto yy272;
5983            if (yych <= 0x1F) goto yy223;
5984            goto yy272;
5985        } else {
5986            if (yych <= '(') {
5987                if (yych <= '\'') goto yy223;
5988                goto yy272;
5989            } else {
5990                if (yych == '+') goto yy272;
5991                goto yy223;
5992            }
5993        }
5994    } else {
5995        if (yych <= ':') {
5996            if (yych <= '-') goto yy272;
5997            if (yych <= '.') goto yy225;
5998            if (yych <= '9') goto yy223;
5999            goto yy225;
6000        } else {
6001            if (yych <= 'Z') {
6002                if (yych <= '@') goto yy223;
6003                goto yy272;
6004            } else {
6005                if (yych <= '`') goto yy223;
6006                if (yych <= 'z') goto yy272;
6007                goto yy223;
6008            }
6009        }
6010    }
6011yy330:
6012    YYDEBUG(330, *YYCURSOR);
6013    yyaccept = 6;
6014    yych = *(YYMARKER = ++YYCURSOR);
6015    if (yych <= ':') {
6016        if (yych <= ' ') {
6017            if (yych == '\t') goto yy283;
6018            if (yych <= 0x1F) goto yy199;
6019            goto yy283;
6020        } else {
6021            if (yych <= '.') {
6022                if (yych <= '-') goto yy199;
6023                goto yy311;
6024            } else {
6025                if (yych <= '/') goto yy199;
6026                if (yych <= '9') goto yy289;
6027                goto yy311;
6028            }
6029        }
6030    } else {
6031        if (yych <= 'P') {
6032            if (yych == 'A') goto yy285;
6033            if (yych <= 'O') goto yy199;
6034            goto yy285;
6035        } else {
6036            if (yych <= 'a') {
6037                if (yych <= '`') goto yy199;
6038                goto yy285;
6039            } else {
6040                if (yych == 'p') goto yy285;
6041                goto yy199;
6042            }
6043        }
6044    }
6045yy331:
6046    YYDEBUG(331, *YYCURSOR);
6047    yyaccept = 6;
6048    yych = *(YYMARKER = ++YYCURSOR);
6049    if (yych <= '1') {
6050        if (yych <= '/') goto yy216;
6051        if (yych <= '0') goto yy333;
6052        goto yy334;
6053    } else {
6054        if (yych <= '2') goto yy335;
6055        if (yych <= '5') goto yy336;
6056        if (yych <= '9') goto yy337;
6057        goto yy216;
6058    }
6059yy332:
6060    YYDEBUG(332, *YYCURSOR);
6061    yych = *++YYCURSOR;
6062    if (yych <= '/') {
6063        if (yych == '.') goto yy221;
6064        goto yy57;
6065    } else {
6066        if (yych <= '0') goto yy304;
6067        if (yych <= '9') goto yy305;
6068        if (yych <= ':') goto yy221;
6069        goto yy57;
6070    }
6071yy333:
6072    YYDEBUG(333, *YYCURSOR);
6073    yyaccept = 6;
6074    yych = *(YYMARKER = ++YYCURSOR);
6075    if (yych <= '/') {
6076        if (yych == '.') goto yy350;
6077        goto yy199;
6078    } else {
6079        if (yych <= '0') goto yy349;
6080        if (yych <= '9') goto yy354;
6081        if (yych <= ':') goto yy350;
6082        goto yy199;
6083    }
6084yy334:
6085    YYDEBUG(334, *YYCURSOR);
6086    yyaccept = 6;
6087    yych = *(YYMARKER = ++YYCURSOR);
6088    if (yych <= '/') {
6089        if (yych == '.') goto yy338;
6090        goto yy199;
6091    } else {
6092        if (yych <= '2') goto yy354;
6093        if (yych <= '9') goto yy349;
6094        if (yych <= ':') goto yy338;
6095        goto yy199;
6096    }
6097yy335:
6098    YYDEBUG(335, *YYCURSOR);
6099    yyaccept = 6;
6100    yych = *(YYMARKER = ++YYCURSOR);
6101    if (yych <= '/') {
6102        if (yych == '.') goto yy338;
6103        goto yy199;
6104    } else {
6105        if (yych <= '4') goto yy349;
6106        if (yych <= '9') goto yy348;
6107        if (yych <= ':') goto yy338;
6108        goto yy199;
6109    }
6110yy336:
6111    YYDEBUG(336, *YYCURSOR);
6112    yyaccept = 6;
6113    yych = *(YYMARKER = ++YYCURSOR);
6114    if (yych <= '/') {
6115        if (yych == '.') goto yy338;
6116        goto yy199;
6117    } else {
6118        if (yych <= '9') goto yy348;
6119        if (yych <= ':') goto yy338;
6120        goto yy199;
6121    }
6122yy337:
6123    YYDEBUG(337, *YYCURSOR);
6124    yyaccept = 6;
6125    yych = *(YYMARKER = ++YYCURSOR);
6126    if (yych <= '/') {
6127        if (yych != '.') goto yy199;
6128    } else {
6129        if (yych <= '9') goto yy263;
6130        if (yych >= ';') goto yy199;
6131    }
6132yy338:
6133    YYDEBUG(338, *YYCURSOR);
6134    yych = *++YYCURSOR;
6135    if (yych <= '/') goto yy57;
6136    if (yych <= '5') goto yy339;
6137    if (yych <= '6') goto yy340;
6138    if (yych <= '9') goto yy266;
6139    goto yy57;
6140yy339:
6141    YYDEBUG(339, *YYCURSOR);
6142    yyaccept = 7;
6143    yych = *(YYMARKER = ++YYCURSOR);
6144    if (yych <= '/') {
6145        if (yych == '.') goto yy267;
6146        goto yy223;
6147    } else {
6148        if (yych <= '9') goto yy341;
6149        if (yych <= ':') goto yy267;
6150        goto yy223;
6151    }
6152yy340:
6153    YYDEBUG(340, *YYCURSOR);
6154    yyaccept = 7;
6155    yych = *(YYMARKER = ++YYCURSOR);
6156    if (yych <= '/') {
6157        if (yych == '.') goto yy267;
6158        goto yy223;
6159    } else {
6160        if (yych <= '0') goto yy229;
6161        if (yych == ':') goto yy267;
6162        goto yy223;
6163    }
6164yy341:
6165    YYDEBUG(341, *YYCURSOR);
6166    yyaccept = 7;
6167    yych = *(YYMARKER = ++YYCURSOR);
6168    if (yych <= ',') {
6169        if (yych <= ' ') {
6170            if (yych == '\t') goto yy343;
6171            if (yych <= 0x1F) goto yy223;
6172            goto yy343;
6173        } else {
6174            if (yych <= '(') {
6175                if (yych <= '\'') goto yy223;
6176                goto yy343;
6177            } else {
6178                if (yych == '+') goto yy343;
6179                goto yy223;
6180            }
6181        }
6182    } else {
6183        if (yych <= ':') {
6184            if (yych <= '-') goto yy343;
6185            if (yych <= '.') goto yy267;
6186            if (yych <= '9') goto yy223;
6187            goto yy267;
6188        } else {
6189            if (yych <= 'Z') {
6190                if (yych <= '@') goto yy223;
6191                goto yy343;
6192            } else {
6193                if (yych <= '`') goto yy223;
6194                if (yych <= 'z') goto yy343;
6195                goto yy223;
6196            }
6197        }
6198    }
6199yy342:
6200    YYDEBUG(342, *YYCURSOR);
6201    ++YYCURSOR;
6202    if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
6203    yych = *YYCURSOR;
6204yy343:
6205    YYDEBUG(343, *YYCURSOR);
6206    if (yych <= '@') {
6207        if (yych <= '\'') {
6208            if (yych <= '\t') {
6209                if (yych <= 0x08) goto yy57;
6210                goto yy342;
6211            } else {
6212                if (yych == ' ') goto yy342;
6213                goto yy57;
6214            }
6215        } else {
6216            if (yych <= '+') {
6217                if (yych <= '(') goto yy234;
6218                if (yych <= '*') goto yy57;
6219                goto yy233;
6220            } else {
6221                if (yych == '-') goto yy233;
6222                goto yy57;
6223            }
6224        }
6225    } else {
6226        if (yych <= 'Z') {
6227            if (yych <= 'G') {
6228                if (yych <= 'A') goto yy344;
6229                if (yych <= 'F') goto yy235;
6230                goto yy232;
6231            } else {
6232                if (yych != 'P') goto yy235;
6233            }
6234        } else {
6235            if (yych <= 'o') {
6236                if (yych <= '`') goto yy57;
6237                if (yych <= 'a') goto yy345;
6238                goto yy236;
6239            } else {
6240                if (yych <= 'p') goto yy345;
6241                if (yych <= 'z') goto yy236;
6242                goto yy57;
6243            }
6244        }
6245    }
6246yy344:
6247    YYDEBUG(344, *YYCURSOR);
6248    yyaccept = 7;
6249    yych = *(YYMARKER = ++YYCURSOR);
6250    if (yych <= 'L') {
6251        if (yych <= '-') {
6252            if (yych == ')') goto yy228;
6253            goto yy223;
6254        } else {
6255            if (yych <= '.') goto yy286;
6256            if (yych <= '@') goto yy223;
6257            goto yy237;
6258        }
6259    } else {
6260        if (yych <= '`') {
6261            if (yych <= 'M') goto yy346;
6262            if (yych <= 'Z') goto yy237;
6263            goto yy223;
6264        } else {
6265            if (yych == 'm') goto yy347;
6266            if (yych <= 'z') goto yy242;
6267            goto yy223;
6268        }
6269    }
6270yy345:
6271    YYDEBUG(345, *YYCURSOR);
6272    yyaccept = 7;
6273    yych = *(YYMARKER = ++YYCURSOR);
6274    if (yych <= 'L') {
6275        if (yych <= '-') {
6276            if (yych == ')') goto yy228;
6277            goto yy223;
6278        } else {
6279            if (yych <= '.') goto yy286;
6280            if (yych <= '@') goto yy223;
6281            goto yy237;
6282        }
6283    } else {
6284        if (yych <= '`') {
6285            if (yych <= 'M') goto yy346;
6286            if (yych <= 'Z') goto yy237;
6287            goto yy223;
6288        } else {
6289            if (yych == 'm') goto yy346;
6290            if (yych <= 'z') goto yy237;
6291            goto yy223;
6292        }
6293    }
6294yy346:
6295    YYDEBUG(346, *YYCURSOR);
6296    yyaccept = 7;
6297    yych = *(YYMARKER = ++YYCURSOR);
6298    if (yych <= ')') {
6299        if (yych <= '\t') {
6300            if (yych <= 0x00) goto yy278;
6301            if (yych <= 0x08) goto yy223;
6302            goto yy278;
6303        } else {
6304            if (yych == ' ') goto yy278;
6305            if (yych <= '(') goto yy223;
6306            goto yy228;
6307        }
6308    } else {
6309        if (yych <= '@') {
6310            if (yych == '.') goto yy288;
6311            goto yy223;
6312        } else {
6313            if (yych <= 'Z') goto yy238;
6314            if (yych <= '`') goto yy223;
6315            if (yych <= 'z') goto yy238;
6316            goto yy223;
6317        }
6318    }
6319yy347:
6320    YYDEBUG(347, *YYCURSOR);
6321    yyaccept = 7;
6322    yych = *(YYMARKER = ++YYCURSOR);
6323    if (yych <= '-') {
6324        if (yych <= 0x1F) {
6325            if (yych <= 0x00) goto yy278;
6326            if (yych == '\t') goto yy278;
6327            goto yy223;
6328        } else {
6329            if (yych <= '(') {
6330                if (yych <= ' ') goto yy278;
6331                goto yy223;
6332            } else {
6333                if (yych <= ')') goto yy228;
6334                if (yych <= ',') goto yy223;
6335                goto yy244;
6336            }
6337        }
6338    } else {
6339        if (yych <= 'Z') {
6340            if (yych <= '.') goto yy288;
6341            if (yych <= '/') goto yy244;
6342            if (yych <= '@') goto yy223;
6343            goto yy238;
6344        } else {
6345            if (yych <= '_') {
6346                if (yych <= '^') goto yy223;
6347                goto yy244;
6348            } else {
6349                if (yych <= '`') goto yy223;
6350                if (yych <= 'z') goto yy243;
6351                goto yy223;
6352            }
6353        }
6354    }
6355yy348:
6356    YYDEBUG(348, *YYCURSOR);
6357    yyaccept = 6;
6358    yych = *(YYMARKER = ++YYCURSOR);
6359    if (yych <= '/') {
6360        if (yych == '.') goto yy225;
6361        goto yy199;
6362    } else {
6363        if (yych <= '9') goto yy289;
6364        if (yych <= ':') goto yy225;
6365        goto yy199;
6366    }
6367yy349:
6368    YYDEBUG(349, *YYCURSOR);
6369    yyaccept = 6;
6370    yych = *(YYMARKER = ++YYCURSOR);
6371    if (yych <= '/') {
6372        if (yych != '.') goto yy199;
6373    } else {
6374        if (yych <= '9') goto yy289;
6375        if (yych >= ';') goto yy199;
6376    }
6377yy350:
6378    YYDEBUG(350, *YYCURSOR);
6379    yych = *++YYCURSOR;
6380    if (yych <= '/') goto yy57;
6381    if (yych <= '5') goto yy351;
6382    if (yych <= '6') goto yy352;
6383    if (yych <= '9') goto yy224;
6384    goto yy57;
6385yy351:
6386    YYDEBUG(351, *YYCURSOR);
6387    yyaccept = 7;
6388    yych = *(YYMARKER = ++YYCURSOR);
6389    if (yych <= '/') {
6390        if (yych == '.') goto yy225;
6391        goto yy223;
6392    } else {
6393        if (yych <= '9') goto yy353;
6394        if (yych <= ':') goto yy225;
6395        goto yy223;
6396    }
6397yy352:
6398    YYDEBUG(352, *YYCURSOR);
6399    yyaccept = 7;
6400    yych = *(YYMARKER = ++YYCURSOR);
6401    if (yych <= '/') {
6402        if (yych == '.') goto yy225;
6403        goto yy223;
6404    } else {
6405        if (yych <= '0') goto yy229;
6406        if (yych == ':') goto yy225;
6407        goto yy223;
6408    }
6409yy353:
6410    YYDEBUG(353, *YYCURSOR);
6411    yyaccept = 7;
6412    yych = *(YYMARKER = ++YYCURSOR);
6413    if (yych <= ',') {
6414        if (yych <= ' ') {
6415            if (yych == '\t') goto yy231;
6416            if (yych <= 0x1F) goto yy223;
6417            goto yy231;
6418        } else {
6419            if (yych <= '(') {
6420                if (yych <= '\'') goto yy223;
6421                goto yy231;
6422            } else {
6423                if (yych == '+') goto yy231;
6424                goto yy223;
6425            }
6426        }
6427    } else {
6428        if (yych <= ':') {
6429            if (yych <= '-') goto yy231;
6430            if (yych <= '.') goto yy225;
6431            if (yych <= '9') goto yy223;
6432            goto yy225;
6433        } else {
6434            if (yych <= 'Z') {
6435                if (yych <= '@') goto yy223;
6436                goto yy231;
6437            } else {
6438                if (yych <= '`') goto yy223;
6439                if (yych <= 'z') goto yy231;
6440                goto yy223;
6441            }
6442        }
6443    }
6444yy354:
6445    YYDEBUG(354, *YYCURSOR);
6446    yyaccept = 6;
6447    yych = *(YYMARKER = ++YYCURSOR);
6448    if (yych <= '/') {
6449        if (yych == '.') goto yy338;
6450        goto yy199;
6451    } else {
6452        if (yych <= '9') goto yy289;
6453        if (yych <= ':') goto yy338;
6454        goto yy199;
6455    }
6456yy355:
6457    YYDEBUG(355, *YYCURSOR);
6458    yyaccept = 6;
6459    yych = *(YYMARKER = ++YYCURSOR);
6460    if (yych <= '9') {
6461        if (yych <= '/') {
6462            if (yych == '.') goto yy300;
6463            goto yy216;
6464        } else {
6465            if (yych <= '0') goto yy332;
6466            if (yych <= '1') goto yy302;
6467            if (yych <= '2') goto yy303;
6468            goto yy297;
6469        }
6470    } else {
6471        if (yych <= 'q') {
6472            if (yych <= ':') goto yy264;
6473            if (yych == 'n') goto yy212;
6474            goto yy216;
6475        } else {
6476            if (yych <= 'r') goto yy213;
6477            if (yych <= 's') goto yy211;
6478            if (yych <= 't') goto yy214;
6479            goto yy216;
6480        }
6481    }
6482yy356:
6483    YYDEBUG(356, *YYCURSOR);
6484    yyaccept = 6;
6485    yych = *(YYMARKER = ++YYCURSOR);
6486    if (yych <= '9') {
6487        if (yych <= '/') {
6488            if (yych == '.') goto yy300;
6489            goto yy216;
6490        } else {
6491            if (yych <= '0') goto yy332;
6492            if (yych <= '1') goto yy302;
6493            if (yych <= '2') goto yy303;
6494            goto yy297;
6495        }
6496    } else {
6497        if (yych <= 'q') {
6498            if (yych <= ':') goto yy264;
6499            if (yych == 'n') goto yy212;
6500            goto yy216;
6501        } else {
6502            if (yych <= 'r') goto yy213;
6503            if (yych <= 's') goto yy211;
6504            if (yych <= 't') goto yy214;
6505            goto yy216;
6506        }
6507    }
6508yy357:
6509    YYDEBUG(357, *YYCURSOR);
6510    yyaccept = 6;
6511    yych = *(YYMARKER = ++YYCURSOR);
6512    if (yych <= 'm') {
6513        if (yych <= '1') {
6514            if (yych <= '/') goto yy216;
6515            if (yych <= '0') goto yy360;
6516            goto yy361;
6517        } else {
6518            if (yych <= '2') goto yy368;
6519            if (yych <= '9') goto yy369;
6520            goto yy216;
6521        }
6522    } else {
6523        if (yych <= 'r') {
6524            if (yych <= 'n') goto yy212;
6525            if (yych <= 'q') goto yy216;
6526            goto yy213;
6527        } else {
6528            if (yych <= 's') goto yy211;
6529            if (yych <= 't') goto yy214;
6530            goto yy216;
6531        }
6532    }
6533yy358:
6534    YYDEBUG(358, *YYCURSOR);
6535    yyaccept = 6;
6536    yych = *(YYMARKER = ++YYCURSOR);
6537    if (yych <= 'm') {
6538        if (yych <= '1') {
6539            if (yych <= '/') goto yy216;
6540            if (yych <= '0') goto yy360;
6541            goto yy361;
6542        } else {
6543            if (yych <= '2') goto yy368;
6544            if (yych <= '9') goto yy369;
6545            goto yy216;
6546        }
6547    } else {
6548        if (yych <= 'r') {
6549            if (yych <= 'n') goto yy212;
6550            if (yych <= 'q') goto yy216;
6551            goto yy213;
6552        } else {
6553            if (yych <= 's') goto yy211;
6554            if (yych <= 't') goto yy214;
6555            goto yy216;
6556        }
6557    }
6558yy359:
6559    YYDEBUG(359, *YYCURSOR);
6560    yyaccept = 6;
6561    yych = *(YYMARKER = ++YYCURSOR);
6562    if (yych <= 'm') {
6563        if (yych <= '1') {
6564            if (yych <= '/') goto yy216;
6565            if (yych >= '1') goto yy361;
6566        } else {
6567            if (yych <= '2') goto yy209;
6568            if (yych <= '9') goto yy210;
6569            goto yy216;
6570        }
6571    } else {
6572        if (yych <= 'r') {
6573            if (yych <= 'n') goto yy212;
6574            if (yych <= 'q') goto yy216;
6575            goto yy213;
6576        } else {
6577            if (yych <= 's') goto yy211;
6578            if (yych <= 't') goto yy214;
6579            goto yy216;
6580        }
6581    }
6582yy360:
6583    YYDEBUG(360, *YYCURSOR);
6584    yyaccept = 6;
6585    yych = *(YYMARKER = ++YYCURSOR);
6586    if (yych <= '9') {
6587        if (yych <= '/') {
6588            if (yych <= ',') goto yy216;
6589            if (yych <= '-') goto yy362;
6590            if (yych <= '.') goto yy331;
6591            goto yy216;
6592        } else {
6593            if (yych <= '0') goto yy332;
6594            if (yych <= '1') goto yy302;
6595            if (yych <= '2') goto yy303;
6596            goto yy297;
6597        }
6598    } else {
6599        if (yych <= 'q') {
6600            if (yych <= ':') goto yy221;
6601            if (yych == 'n') goto yy212;
6602            goto yy216;
6603        } else {
6604            if (yych <= 'r') goto yy213;
6605            if (yych <= 's') goto yy211;
6606            if (yych <= 't') goto yy214;
6607            goto yy216;
6608        }
6609    }
6610yy361:
6611    YYDEBUG(361, *YYCURSOR);
6612    yyaccept = 6;
6613    yych = *(YYMARKER = ++YYCURSOR);
6614    if (yych <= '9') {
6615        if (yych <= '/') {
6616            if (yych <= ',') goto yy216;
6617            if (yych <= '-') goto yy362;
6618            if (yych <= '.') goto yy300;
6619            goto yy216;
6620        } else {
6621            if (yych <= '0') goto yy301;
6622            if (yych <= '1') goto yy302;
6623            if (yych <= '2') goto yy303;
6624            goto yy297;
6625        }
6626    } else {
6627        if (yych <= 'q') {
6628            if (yych <= ':') goto yy264;
6629            if (yych == 'n') goto yy212;
6630            goto yy216;
6631        } else {
6632            if (yych <= 'r') goto yy213;
6633            if (yych <= 's') goto yy211;
6634            if (yych <= 't') goto yy214;
6635            goto yy216;
6636        }
6637    }
6638yy362:
6639    YYDEBUG(362, *YYCURSOR);
6640    yych = *++YYCURSOR;
6641    if (yych <= '/') goto yy57;
6642    if (yych >= ':') goto yy57;
6643    YYDEBUG(363, *YYCURSOR);
6644    ++YYCURSOR;
6645    if ((yych = *YYCURSOR) <= '/') goto yy364;
6646    if (yych <= '9') goto yy365;
6647yy364:
6648    YYDEBUG(364, *YYCURSOR);
6649#line 1533 "ext/date/lib/parse_date.re"
6650    {
6651        int length = 0;
6652        DEBUG_OUTPUT("pgtextshort");
6653        TIMELIB_INIT;
6654        TIMELIB_HAVE_DATE();
6655        s->time->m = timelib_get_month((char **) &ptr);
6656        s->time->d = timelib_get_nr((char **) &ptr, 2);
6657        s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
6658        TIMELIB_PROCESS_YEAR(s->time->y, length);
6659        TIMELIB_DEINIT;
6660        return TIMELIB_PG_TEXT;
6661    }
6662#line 6663 "ext/date/lib/parse_date.c"
6663yy365:
6664    YYDEBUG(365, *YYCURSOR);
6665    yych = *++YYCURSOR;
6666    if (yych <= '/') goto yy364;
6667    if (yych >= ':') goto yy364;
6668    YYDEBUG(366, *YYCURSOR);
6669    yych = *++YYCURSOR;
6670    if (yych <= '/') goto yy364;
6671    if (yych >= ':') goto yy364;
6672    YYDEBUG(367, *YYCURSOR);
6673    yych = *++YYCURSOR;
6674    goto yy364;
6675yy368:
6676    YYDEBUG(368, *YYCURSOR);
6677    yyaccept = 6;
6678    yych = *(YYMARKER = ++YYCURSOR);
6679    if (yych <= '9') {
6680        if (yych <= '/') {
6681            if (yych <= ',') goto yy216;
6682            if (yych <= '-') goto yy362;
6683            if (yych <= '.') goto yy300;
6684            goto yy216;
6685        } else {
6686            if (yych <= '0') goto yy332;
6687            if (yych <= '1') goto yy302;
6688            if (yych <= '2') goto yy303;
6689            goto yy297;
6690        }
6691    } else {
6692        if (yych <= 'q') {
6693            if (yych <= ':') goto yy264;
6694            if (yych == 'n') goto yy212;
6695            goto yy216;
6696        } else {
6697            if (yych <= 'r') goto yy213;
6698            if (yych <= 's') goto yy211;
6699            if (yych <= 't') goto yy214;
6700            goto yy216;
6701        }
6702    }
6703yy369:
6704    YYDEBUG(369, *YYCURSOR);
6705    yyaccept = 6;
6706    yych = *(YYMARKER = ++YYCURSOR);
6707    if (yych <= '9') {
6708        if (yych <= '/') {
6709            if (yych <= ',') goto yy216;
6710            if (yych <= '-') goto yy362;
6711            if (yych <= '.') goto yy300;
6712            goto yy216;
6713        } else {
6714            if (yych <= '0') goto yy332;
6715            if (yych <= '1') goto yy302;
6716            if (yych <= '2') goto yy303;
6717            goto yy297;
6718        }
6719    } else {
6720        if (yych <= 'q') {
6721            if (yych <= ':') goto yy264;
6722            if (yych == 'n') goto yy212;
6723            goto yy216;
6724        } else {
6725            if (yych <= 'r') goto yy213;
6726            if (yych <= 's') goto yy211;
6727            if (yych <= 't') goto yy214;
6728            goto yy216;
6729        }
6730    }
6731yy370:
6732    YYDEBUG(370, *YYCURSOR);
6733    yyaccept = 0;
6734    yych = *(YYMARKER = ++YYCURSOR);
6735    if (yych <= 'B') {
6736        if (yych <= '-') {
6737            if (yych == ')') goto yy140;
6738            if (yych <= ',') goto yy4;
6739            goto yy148;
6740        } else {
6741            if (yych == '/') goto yy148;
6742            if (yych <= '@') goto yy4;
6743            goto yy142;
6744        }
6745    } else {
6746        if (yych <= '_') {
6747            if (yych <= 'C') goto yy193;
6748            if (yych <= 'Z') goto yy142;
6749            if (yych <= '^') goto yy4;
6750            goto yy148;
6751        } else {
6752            if (yych <= 'b') {
6753                if (yych <= '`') goto yy4;
6754                goto yy147;
6755            } else {
6756                if (yych <= 'c') goto yy371;
6757                if (yych <= 'z') goto yy147;
6758                goto yy4;
6759            }
6760        }
6761    }
6762yy371:
6763    YYDEBUG(371, *YYCURSOR);
6764    yyaccept = 5;
6765    yych = *(YYMARKER = ++YYCURSOR);
6766    if (yych <= '9') {
6767        if (yych <= '(') {
6768            if (yych <= '\t') {
6769                if (yych <= 0x08) goto yy194;
6770                goto yy196;
6771            } else {
6772                if (yych == ' ') goto yy196;
6773                goto yy194;
6774            }
6775        } else {
6776            if (yych <= '-') {
6777                if (yych <= ')') goto yy140;
6778                if (yych <= ',') goto yy194;
6779            } else {
6780                if (yych == '/') goto yy148;
6781                goto yy196;
6782            }
6783        }
6784    } else {
6785        if (yych <= '^') {
6786            if (yych <= 'D') {
6787                if (yych <= '@') goto yy194;
6788                goto yy143;
6789            } else {
6790                if (yych <= 'E') goto yy202;
6791                if (yych <= 'Z') goto yy143;
6792                goto yy194;
6793            }
6794        } else {
6795            if (yych <= 'd') {
6796                if (yych <= '_') goto yy148;
6797                if (yych <= '`') goto yy194;
6798                goto yy151;
6799            } else {
6800                if (yych <= 'e') goto yy373;
6801                if (yych <= 'z') goto yy151;
6802                goto yy194;
6803            }
6804        }
6805    }
6806yy372:
6807    YYDEBUG(372, *YYCURSOR);
6808    yych = *++YYCURSOR;
6809    if (yybm[0+yych] & 8) {
6810        goto yy149;
6811    }
6812    if (yych <= '/') goto yy196;
6813    if (yych <= '0') goto yy357;
6814    if (yych <= '2') goto yy358;
6815    if (yych <= '3') goto yy359;
6816    goto yy196;
6817yy373:
6818    YYDEBUG(373, *YYCURSOR);
6819    yyaccept = 0;
6820    yych = *(YYMARKER = ++YYCURSOR);
6821    if (yych <= 'L') {
6822        if (yych <= '-') {
6823            if (yych == ')') goto yy140;
6824            if (yych <= ',') goto yy4;
6825            goto yy148;
6826        } else {
6827            if (yych == '/') goto yy148;
6828            if (yych <= '@') goto yy4;
6829            goto yy144;
6830        }
6831    } else {
6832        if (yych <= '_') {
6833            if (yych <= 'M') goto yy203;
6834            if (yych <= 'Z') goto yy144;
6835            if (yych <= '^') goto yy4;
6836            goto yy148;
6837        } else {
6838            if (yych <= 'l') {
6839                if (yych <= '`') goto yy4;
6840                goto yy152;
6841            } else {
6842                if (yych <= 'm') goto yy374;
6843                if (yych <= 'z') goto yy152;
6844                goto yy4;
6845            }
6846        }
6847    }
6848yy374:
6849    YYDEBUG(374, *YYCURSOR);
6850    yyaccept = 0;
6851    yych = *(YYMARKER = ++YYCURSOR);
6852    if (yych <= 'A') {
6853        if (yych <= '-') {
6854            if (yych == ')') goto yy140;
6855            if (yych <= ',') goto yy4;
6856            goto yy148;
6857        } else {
6858            if (yych == '/') goto yy148;
6859            if (yych <= '@') goto yy4;
6860            goto yy145;
6861        }
6862    } else {
6863        if (yych <= '_') {
6864            if (yych <= 'B') goto yy204;
6865            if (yych <= 'Z') goto yy145;
6866            if (yych <= '^') goto yy4;
6867            goto yy148;
6868        } else {
6869            if (yych <= 'a') {
6870                if (yych <= '`') goto yy4;
6871                goto yy153;
6872            } else {
6873                if (yych <= 'b') goto yy375;
6874                if (yych <= 'z') goto yy153;
6875                goto yy4;
6876            }
6877        }
6878    }
6879yy375:
6880    YYDEBUG(375, *YYCURSOR);
6881    yyaccept = 0;
6882    yych = *(YYMARKER = ++YYCURSOR);
6883    if (yych <= 'D') {
6884        if (yych <= ',') {
6885            if (yych == ')') goto yy140;
6886            goto yy4;
6887        } else {
6888            if (yych == '.') goto yy4;
6889            if (yych <= '/') goto yy148;
6890            goto yy4;
6891        }
6892    } else {
6893        if (yych <= '`') {
6894            if (yych <= 'E') goto yy205;
6895            if (yych == '_') goto yy148;
6896            goto yy4;
6897        } else {
6898            if (yych == 'e') goto yy376;
6899            if (yych <= 'z') goto yy154;
6900            goto yy4;
6901        }
6902    }
6903yy376:
6904    YYDEBUG(376, *YYCURSOR);
6905    yych = *++YYCURSOR;
6906    if (yych == 'R') goto yy206;
6907    if (yych != 'r') goto yy155;
6908yy377:
6909    YYDEBUG(377, *YYCURSOR);
6910    yyaccept = 5;
6911    yych = *(YYMARKER = ++YYCURSOR);
6912    if (yybm[0+yych] & 16) {
6913        goto yy154;
6914    }
6915    if (yych <= '-') {
6916        if (yych <= 0x1F) {
6917            if (yych == '\t') goto yy196;
6918            goto yy194;
6919        } else {
6920            if (yych <= ' ') goto yy196;
6921            if (yych <= ',') goto yy194;
6922        }
6923    } else {
6924        if (yych <= '9') {
6925            if (yych == '/') goto yy148;
6926            goto yy196;
6927        } else {
6928            if (yych == '_') goto yy148;
6929            goto yy194;
6930        }
6931    }
6932yy378:
6933    YYDEBUG(378, *YYCURSOR);
6934    yych = *++YYCURSOR;
6935    if (yybm[0+yych] & 8) {
6936        goto yy149;
6937    }
6938    goto yy196;
6939yy379:
6940    YYDEBUG(379, *YYCURSOR);
6941    yych = *++YYCURSOR;
6942    if (yych <= 'T') {
6943        if (yych <= ')') {
6944            if (yych <= '(') goto yy4;
6945            goto yy140;
6946        } else {
6947            if (yych <= '@') goto yy4;
6948            if (yych <= 'S') goto yy142;
6949        }
6950    } else {
6951        if (yych <= 's') {
6952            if (yych <= 'Z') goto yy142;
6953            if (yych <= '`') goto yy4;
6954            goto yy142;
6955        } else {
6956            if (yych <= 't') goto yy380;
6957            if (yych <= 'z') goto yy142;
6958            goto yy4;
6959        }
6960    }
6961yy380:
6962    YYDEBUG(380, *YYCURSOR);
6963    yyaccept = 5;
6964    yych = *(YYMARKER = ++YYCURSOR);
6965    if (yych <= '/') {
6966        if (yych <= '(') {
6967            if (yych <= '\t') {
6968                if (yych <= 0x08) goto yy194;
6969                goto yy196;
6970            } else {
6971                if (yych == ' ') goto yy196;
6972                goto yy194;
6973            }
6974        } else {
6975            if (yych <= ',') {
6976                if (yych <= ')') goto yy140;
6977                goto yy194;
6978            } else {
6979                if (yych <= '-') goto yy197;
6980                if (yych <= '.') goto yy196;
6981                goto yy194;
6982            }
6983        }
6984    } else {
6985        if (yych <= 'Z') {
6986            if (yych <= '@') {
6987                if (yych <= '9') goto yy196;
6988                goto yy194;
6989            } else {
6990                if (yych != 'O') goto yy143;
6991            }
6992        } else {
6993            if (yych <= 'n') {
6994                if (yych <= '`') goto yy194;
6995                goto yy143;
6996            } else {
6997                if (yych <= 'o') goto yy381;
6998                if (yych <= 'z') goto yy143;
6999                goto yy194;
7000            }
7001        }
7002    }
7003yy381:
7004    YYDEBUG(381, *YYCURSOR);
7005    yych = *++YYCURSOR;
7006    if (yych <= 'B') {
7007        if (yych <= ')') {
7008            if (yych <= '(') goto yy4;
7009            goto yy140;
7010        } else {
7011            if (yych <= '@') goto yy4;
7012            if (yych <= 'A') goto yy144;
7013        }
7014    } else {
7015        if (yych <= 'a') {
7016            if (yych <= 'Z') goto yy144;
7017            if (yych <= '`') goto yy4;
7018            goto yy144;
7019        } else {
7020            if (yych <= 'b') goto yy382;
7021            if (yych <= 'z') goto yy144;
7022            goto yy4;
7023        }
7024    }
7025yy382:
7026    YYDEBUG(382, *YYCURSOR);
7027    yych = *++YYCURSOR;
7028    if (yych <= 'E') {
7029        if (yych <= ')') {
7030            if (yych <= '(') goto yy4;
7031            goto yy140;
7032        } else {
7033            if (yych <= '@') goto yy4;
7034            if (yych <= 'D') goto yy145;
7035        }
7036    } else {
7037        if (yych <= 'd') {
7038            if (yych <= 'Z') goto yy145;
7039            if (yych <= '`') goto yy4;
7040            goto yy145;
7041        } else {
7042            if (yych <= 'e') goto yy383;
7043            if (yych <= 'z') goto yy145;
7044            goto yy4;
7045        }
7046    }
7047yy383:
7048    YYDEBUG(383, *YYCURSOR);
7049    yych = *++YYCURSOR;
7050    if (yych <= 'Q') {
7051        if (yych == ')') goto yy140;
7052        goto yy4;
7053    } else {
7054        if (yych <= 'R') goto yy206;
7055        if (yych == 'r') goto yy206;
7056        goto yy4;
7057    }
7058yy384:
7059    YYDEBUG(384, *YYCURSOR);
7060    yyaccept = 0;
7061    yych = *(YYMARKER = ++YYCURSOR);
7062    if (yych <= 'S') {
7063        if (yych <= '-') {
7064            if (yych == ')') goto yy140;
7065            if (yych <= ',') goto yy4;
7066            goto yy148;
7067        } else {
7068            if (yych == '/') goto yy148;
7069            if (yych <= '@') goto yy4;
7070            goto yy142;
7071        }
7072    } else {
7073        if (yych <= '_') {
7074            if (yych <= 'T') goto yy380;
7075            if (yych <= 'Z') goto yy142;
7076            if (yych <= '^') goto yy4;
7077            goto yy148;
7078        } else {
7079            if (yych <= 's') {
7080                if (yych <= '`') goto yy4;
7081                goto yy147;
7082            } else {
7083                if (yych <= 't') goto yy385;
7084                if (yych <= 'z') goto yy147;
7085                goto yy4;
7086            }
7087        }
7088    }
7089yy385:
7090    YYDEBUG(385, *YYCURSOR);
7091    yyaccept = 5;
7092    yych = *(YYMARKER = ++YYCURSOR);
7093    if (yych <= '9') {
7094        if (yych <= '(') {
7095            if (yych <= '\t') {
7096                if (yych <= 0x08) goto yy194;
7097                goto yy196;
7098            } else {
7099                if (yych == ' ') goto yy196;
7100                goto yy194;
7101            }
7102        } else {
7103            if (yych <= '-') {
7104                if (yych <= ')') goto yy140;
7105                if (yych <= ',') goto yy194;
7106                goto yy372;
7107            } else {
7108                if (yych == '/') goto yy148;
7109                goto yy196;
7110            }
7111        }
7112    } else {
7113        if (yych <= '^') {
7114            if (yych <= 'N') {
7115                if (yych <= '@') goto yy194;
7116                goto yy143;
7117            } else {
7118                if (yych <= 'O') goto yy381;
7119                if (yych <= 'Z') goto yy143;
7120                goto yy194;
7121            }
7122        } else {
7123            if (yych <= 'n') {
7124                if (yych <= '_') goto yy148;
7125                if (yych <= '`') goto yy194;
7126                goto yy151;
7127            } else {
7128                if (yych <= 'o') goto yy386;
7129                if (yych <= 'z') goto yy151;
7130                goto yy194;
7131            }
7132        }
7133    }
7134yy386:
7135    YYDEBUG(386, *YYCURSOR);
7136    yyaccept = 0;
7137    yych = *(YYMARKER = ++YYCURSOR);
7138    if (yych <= 'A') {
7139        if (yych <= '-') {
7140            if (yych == ')') goto yy140;
7141            if (yych <= ',') goto yy4;
7142            goto yy148;
7143        } else {
7144            if (yych == '/') goto yy148;
7145            if (yych <= '@') goto yy4;
7146            goto yy144;
7147        }
7148    } else {
7149        if (yych <= '_') {
7150            if (yych <= 'B') goto yy382;
7151            if (yych <= 'Z') goto yy144;
7152            if (yych <= '^') goto yy4;
7153            goto yy148;
7154        } else {
7155            if (yych <= 'a') {
7156                if (yych <= '`') goto yy4;
7157                goto yy152;
7158            } else {
7159                if (yych <= 'b') goto yy387;
7160                if (yych <= 'z') goto yy152;
7161                goto yy4;
7162            }
7163        }
7164    }
7165yy387:
7166    YYDEBUG(387, *YYCURSOR);
7167    yyaccept = 0;
7168    yych = *(YYMARKER = ++YYCURSOR);
7169    if (yych <= 'D') {
7170        if (yych <= '-') {
7171            if (yych == ')') goto yy140;
7172            if (yych <= ',') goto yy4;
7173            goto yy148;
7174        } else {
7175            if (yych == '/') goto yy148;
7176            if (yych <= '@') goto yy4;
7177            goto yy145;
7178        }
7179    } else {
7180        if (yych <= '_') {
7181            if (yych <= 'E') goto yy383;
7182            if (yych <= 'Z') goto yy145;
7183            if (yych <= '^') goto yy4;
7184            goto yy148;
7185        } else {
7186            if (yych <= 'd') {
7187                if (yych <= '`') goto yy4;
7188                goto yy153;
7189            } else {
7190                if (yych <= 'e') goto yy388;
7191                if (yych <= 'z') goto yy153;
7192                goto yy4;
7193            }
7194        }
7195    }
7196yy388:
7197    YYDEBUG(388, *YYCURSOR);
7198    yyaccept = 0;
7199    yych = *(YYMARKER = ++YYCURSOR);
7200    if (yych <= 'Q') {
7201        if (yych <= ',') {
7202            if (yych == ')') goto yy140;
7203            goto yy4;
7204        } else {
7205            if (yych == '.') goto yy4;
7206            if (yych <= '/') goto yy148;
7207            goto yy4;
7208        }
7209    } else {
7210        if (yych <= '`') {
7211            if (yych <= 'R') goto yy206;
7212            if (yych == '_') goto yy148;
7213            goto yy4;
7214        } else {
7215            if (yych == 'r') goto yy377;
7216            if (yych <= 'z') goto yy154;
7217            goto yy4;
7218        }
7219    }
7220yy389:
7221    YYDEBUG(389, *YYCURSOR);
7222    yych = *++YYCURSOR;
7223    if (yych <= 'G') {
7224        if (yych <= ')') {
7225            if (yych <= '(') goto yy4;
7226            goto yy140;
7227        } else {
7228            if (yych <= '@') goto yy4;
7229            if (yych <= 'F') goto yy142;
7230            goto yy397;
7231        }
7232    } else {
7233        if (yych <= 'f') {
7234            if (yych <= 'Z') goto yy142;
7235            if (yych <= '`') goto yy4;
7236            goto yy142;
7237        } else {
7238            if (yych <= 'g') goto yy397;
7239            if (yych <= 'z') goto yy142;
7240            goto yy4;
7241        }
7242    }
7243yy390:
7244    YYDEBUG(390, *YYCURSOR);
7245    yych = *++YYCURSOR;
7246    if (yych <= 'R') {
7247        if (yych <= ')') {
7248            if (yych <= '(') goto yy4;
7249            goto yy140;
7250        } else {
7251            if (yych <= '@') goto yy4;
7252            if (yych <= 'Q') goto yy142;
7253            goto yy394;
7254        }
7255    } else {
7256        if (yych <= 'q') {
7257            if (yych <= 'Z') goto yy142;
7258            if (yych <= '`') goto yy4;
7259            goto yy142;
7260        } else {
7261            if (yych <= 'r') goto yy394;
7262            if (yych <= 'z') goto yy142;
7263            goto yy4;
7264        }
7265    }
7266yy391:
7267    YYDEBUG(391, *YYCURSOR);
7268    yych = *++YYCURSOR;
7269    if (yych <= 'O') {
7270        if (yych <= ')') {
7271            if (yych <= '(') goto yy4;
7272            goto yy140;
7273        } else {
7274            if (yych <= '@') goto yy4;
7275            if (yych <= 'N') goto yy142;
7276        }
7277    } else {
7278        if (yych <= 'n') {
7279            if (yych <= 'Z') goto yy142;
7280            if (yych <= '`') goto yy4;
7281            goto yy142;
7282        } else {
7283            if (yych <= 'o') goto yy392;
7284            if (yych <= 'z') goto yy142;
7285            goto yy4;
7286        }
7287    }
7288yy392:
7289    YYDEBUG(392, *YYCURSOR);
7290    ++YYCURSOR;
7291    if ((yych = *YYCURSOR) <= '@') {
7292        if (yych == ')') goto yy140;
7293    } else {
7294        if (yych <= 'Z') goto yy143;
7295        if (yych <= '`') goto yy393;
7296        if (yych <= 'z') goto yy143;
7297    }
7298yy393:
7299    YYDEBUG(393, *YYCURSOR);
7300#line 1591 "ext/date/lib/parse_date.re"
7301    {
7302        DEBUG_OUTPUT("ago");
7303        TIMELIB_INIT;
7304        s->time->relative.y = 0 - s->time->relative.y;
7305        s->time->relative.m = 0 - s->time->relative.m;
7306        s->time->relative.d = 0 - s->time->relative.d;
7307        s->time->relative.h = 0 - s->time->relative.h;
7308        s->time->relative.i = 0 - s->time->relative.i;
7309        s->time->relative.s = 0 - s->time->relative.s;
7310        s->time->relative.weekday = 0 - s->time->relative.weekday;
7311        if (s->time->relative.weekday == 0) {
7312            s->time->relative.weekday = -7;
7313        }
7314        if (s->time->relative.have_special_relative && s->time->relative.special.type == TIMELIB_SPECIAL_WEEKDAY) {
7315            s->time->relative.special.amount = 0 - s->time->relative.special.amount;
7316        }
7317        TIMELIB_DEINIT;
7318        return TIMELIB_AGO;
7319    }
7320#line 7321 "ext/date/lib/parse_date.c"
7321yy394:
7322    YYDEBUG(394, *YYCURSOR);
7323    yyaccept = 5;
7324    yych = *(YYMARKER = ++YYCURSOR);
7325    if (yych <= '/') {
7326        if (yych <= '(') {
7327            if (yych <= '\t') {
7328                if (yych <= 0x08) goto yy194;
7329                goto yy196;
7330            } else {
7331                if (yych == ' ') goto yy196;
7332                goto yy194;
7333            }
7334        } else {
7335            if (yych <= ',') {
7336                if (yych <= ')') goto yy140;
7337                goto yy194;
7338            } else {
7339                if (yych <= '-') goto yy197;
7340                if (yych <= '.') goto yy196;
7341                goto yy194;
7342            }
7343        }
7344    } else {
7345        if (yych <= 'Z') {
7346            if (yych <= '@') {