📄 parse_date.g.c
字号:
/* Generated by re2c */#line 1 "parse_date.g.re"/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2006 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.txt | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Derick Rethans <derick@derickrethans.nl> | +----------------------------------------------------------------------+ */#include "timelib.h"#include <stdio.h>#include <ctype.h>#ifdef HAVE_STDLIB_H#include <stdlib.h>#endif#ifdef HAVE_STRING_H#include <string.h>#else#include <strings.h>#endif#if defined(_MSC_VER)# define strtoll(s, f, b) _atoi64(s)#elif !defined(HAVE_STRTOLL)# if defined(HAVE_ATOLL)# define strtoll(s, f, b) atoll(s)# else# define strtoll(s, f, b) strtol(s, f, b)# endif#endif#define TIMELIB_SECOND 1#define TIMELIB_MINUTE 2#define TIMELIB_HOUR 3#define TIMELIB_DAY 4#define TIMELIB_MONTH 5#define TIMELIB_YEAR 6#define TIMELIB_WEEKDAY 7#define EOI 257#define TIME 258#define DATE 259#define TIMELIB_XMLRPC_SOAP 260#define TIMELIB_TIME12 261#define TIMELIB_TIME24 262#define TIMELIB_GNU_NOCOLON 263#define TIMELIB_GNU_NOCOLON_TZ 264#define TIMELIB_ISO_NOCOLON 265#define TIMELIB_AMERICAN 266#define TIMELIB_ISO_DATE 267#define TIMELIB_DATE_FULL 268#define TIMELIB_DATE_TEXT 269#define TIMELIB_DATE_NOCOLON 270#define TIMELIB_PG_YEARDAY 271#define TIMELIB_PG_TEXT 272#define TIMELIB_PG_REVERSE 273#define TIMELIB_CLF 274#define TIMELIB_DATE_NO_DAY 275#define TIMELIB_SHORTDATE_WITH_TIME 276#define TIMELIB_DATE_FULL_POINTED 277#define TIMELIB_TIME24_WITH_ZONE 278#define TIMELIB_ISO_WEEK 279#define TIMELIB_TIMEZONE 300#define TIMELIB_AGO 301#define TIMELIB_RELATIVE 310#define TIMELIB_ERROR 999typedef unsigned char uchar;#define BSIZE 8192#define YYCTYPE uchar#define YYCURSOR cursor#define YYLIMIT s->lim#define YYMARKER s->ptr#define YYFILL(n) return EOI;#define RET(i) {s->cur = cursor; return i;}#define timelib_string_free free#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { 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; } }#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; }#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { return TIMELIB_ERROR; } else { s->time->have_date = 1; } }#define TIMELIB_UNHAVE_DATE() { s->time->have_date = 0; s->time->d = 0; s->time->m = 0; s->time->y = 0; }#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; s->time->relative.weekday_behavior = 0; }#define TIMELIB_HAVE_WEEKDAY_RELATIVE() { s->time->have_weekday_relative = 1; }#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { return TIMELIB_ERROR; } else { s->time.have_zone = 1; } }#define TIMELIB_INIT s->cur = cursor; str = timelib_string(s); ptr = str#define TIMELIB_DEINIT timelib_string_free(str)#define TIMELIB_ADJUST_RELATIVE_WEEKDAY() if (in->time.have_weekday_relative && (in.rel.d > 0)) { in.rel.d -= 7; }#define TIMELIB_PROCESS_YEAR(x) { \ if ((x) == -1) { \ /* (x) = 0; */ \ } else if ((x) < 100) { \ if ((x) < 70) { \ (x) += 2000; \ } else { \ (x) += 1900; \ } \ } \}#ifdef DEBUG_PARSER#define DEBUG_OUTPUT(s) printf("%s\n", s);#define YYDEBUG(s,c) { if (s != -1) { printf("state: %d ", s); printf("[%c]\n", c); } }#else#define DEBUG_OUTPUT(s)#define YYDEBUG(s,c)#endif#include "timelib_structs.h"typedef struct timelib_elems { unsigned int c; /* Number of elements */ char **v; /* Values */} timelib_elems;typedef struct Scanner { int fd; uchar *lim, *str, *ptr, *cur, *tok, *pos; unsigned int line, len; int errors; struct timelib_time *time; timelib_tzdb *tzdb;} Scanner;typedef struct _timelib_lookup_table { const char *name; int type; int value;} timelib_lookup_table;typedef struct _timelib_relunit { const char *name; int unit; int multiplier;} timelib_relunit;#define HOUR(a) (int)(a * 60)/* The timezone table. */static timelib_tz_lookup_table timelib_timezone_lookup[] = {#include "timezonemap.h" { NULL, 0, 0, NULL },};static timelib_tz_lookup_table timelib_timezone_fallbackmap[] = {#include "fallbackmap.h" { NULL, 0, 0, NULL },};static timelib_tz_lookup_table timelib_timezone_utc[] = { { "utc", 0, 0, "UTC" },};static timelib_relunit const timelib_relunit_lookup[] = { { "sec", TIMELIB_SECOND, 1 }, { "secs", TIMELIB_SECOND, 1 }, { "second", TIMELIB_SECOND, 1 }, { "seconds", TIMELIB_SECOND, 1 }, { "min", TIMELIB_MINUTE, 1 }, { "mins", TIMELIB_MINUTE, 1 }, { "minute", TIMELIB_MINUTE, 1 }, { "minutes", TIMELIB_MINUTE, 1 }, { "hour", TIMELIB_HOUR, 1 }, { "hours", TIMELIB_HOUR, 1 }, { "day", TIMELIB_DAY, 1 }, { "days", TIMELIB_DAY, 1 }, { "week", TIMELIB_DAY, 7 }, { "weeks", TIMELIB_DAY, 7 }, { "fortnight", TIMELIB_DAY, 14 }, { "fortnights", TIMELIB_DAY, 14 }, { "forthnight", TIMELIB_DAY, 14 }, { "forthnights", TIMELIB_DAY, 14 }, { "month", TIMELIB_MONTH, 1 }, { "months", TIMELIB_MONTH, 1 }, { "year", TIMELIB_YEAR, 1 }, { "years", TIMELIB_YEAR, 1 }, { "monday", TIMELIB_WEEKDAY, 1 }, { "mon", TIMELIB_WEEKDAY, 1 }, { "tuesday", TIMELIB_WEEKDAY, 2 }, { "tue", TIMELIB_WEEKDAY, 2 }, { "wednesday", TIMELIB_WEEKDAY, 3 }, { "wed", TIMELIB_WEEKDAY, 3 }, { "thursday", TIMELIB_WEEKDAY, 4 }, { "thu", TIMELIB_WEEKDAY, 4 }, { "friday", TIMELIB_WEEKDAY, 5 }, { "fri", TIMELIB_WEEKDAY, 5 }, { "saturday", TIMELIB_WEEKDAY, 6 }, { "sat", TIMELIB_WEEKDAY, 6 }, { "sunday", TIMELIB_WEEKDAY, 0 }, { "sun", TIMELIB_WEEKDAY, 0 }, { NULL, 0, 0 }};/* The relative text table. */static timelib_lookup_table const timelib_reltext_lookup[] = { { "first", 0, 1 }, { "next", 0, 1 }, { "second", 0, 2 }, { "third", 0, 3 }, { "fourth", 0, 4 }, { "fifth", 0, 5 }, { "sixth", 0, 6 }, { "seventh", 0, 7 }, { "eight", 0, 8 }, { "ninth", 0, 9 }, { "tenth", 0, 10 }, { "eleventh", 0, 11 }, { "twelfth", 0, 12 }, { "last", 0, -1 }, { "previous", 0, -1 }, { "this", 1, 0 }, { NULL, 1, 0 }};/* The month table. */static timelib_lookup_table const timelib_month_lookup[] = { { "jan", 0, 1 }, { "feb", 0, 2 }, { "mar", 0, 3 }, { "apr", 0, 4 }, { "may", 0, 5 }, { "jun", 0, 6 }, { "jul", 0, 7 }, { "aug", 0, 8 }, { "sep", 0, 9 }, { "sept", 0, 9 }, { "oct", 0, 10 }, { "nov", 0, 11 }, { "dec", 0, 12 }, { "i", 0, 1 }, { "ii", 0, 2 }, { "iii", 0, 3 }, { "iv", 0, 4 }, { "v", 0, 5 }, { "vi", 0, 6 }, { "vii", 0, 7 }, { "viii", 0, 8 }, { "ix", 0, 9 }, { "x", 0, 10 }, { "xi", 0, 11 }, { "xii", 0, 12 }, { "january", 0, 1 }, { "february", 0, 2 }, { "march", 0, 3 }, { "april", 0, 4 }, { "may", 0, 5 }, { "june", 0, 6 }, { "july", 0, 7 }, { "august", 0, 8 }, { "september", 0, 9 }, { "october", 0, 10 }, { "november", 0, 11 }, { "december", 0, 12 }, { NULL, 0, 0 }};#if 0static char* timelib_ltrim(char *s){ char *ptr = s; while (ptr[0] == ' ') { ptr++; } return ptr;}#endif#if 0uchar *fill(Scanner *s, uchar *cursor){ if(!s->eof){ unsigned int cnt = s->tok - s->bot; if(cnt){ memcpy(s->bot, s->tok, s->lim - s->tok); s->tok = s->bot; s->ptr -= cnt; cursor -= cnt; s->pos -= cnt; s->lim -= cnt; } if((s->top - s->lim) < BSIZE){ uchar *buf = (uchar*) malloc(((s->lim - s->bot) + BSIZE)*sizeof(uchar)); memcpy(buf, s->tok, s->lim - s->tok);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -