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