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