diff options
Diffstat (limited to 'ext/date/lib/parse_iso_intervals.c')
-rw-r--r-- | ext/date/lib/parse_iso_intervals.c | 791 |
1 files changed, 414 insertions, 377 deletions
diff --git a/ext/date/lib/parse_iso_intervals.c b/ext/date/lib/parse_iso_intervals.c index 64d2d29553..80c20b4f70 100644 --- a/ext/date/lib/parse_iso_intervals.c +++ b/ext/date/lib/parse_iso_intervals.c @@ -1,9 +1,9 @@ -/* Generated by re2c 0.15.3 on Fri Oct 12 11:47:32 2018 */ +/* Generated by re2c 2.0.3 on Mon Aug 31 11:41:00 2020 */ #line 1 "parse_iso_intervals.re" /* * The MIT License (MIT) * - * Copyright (c) 2015 Derick Rethans + * Copyright (c) 2015-2019 Derick Rethans * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -221,54 +221,72 @@ std: yych = *YYCURSOR; if (yych <= ',') { if (yych <= '\n') { - if (yych <= 0x00) goto yy9; - if (yych <= 0x08) goto yy11; - if (yych <= '\t') goto yy7; - goto yy9; + if (yych <= 0x00) goto yy2; + if (yych <= 0x08) goto yy4; + if (yych <= '\t') goto yy6; } else { - if (yych == ' ') goto yy7; - if (yych <= '+') goto yy11; - goto yy7; + if (yych == ' ') goto yy6; + if (yych <= '+') goto yy4; + goto yy6; } } else { if (yych <= 'O') { - if (yych <= '-') goto yy11; - if (yych <= '/') goto yy7; - if (yych <= '9') goto yy4; - goto yy11; + if (yych <= '-') goto yy4; + if (yych <= '/') goto yy6; + if (yych <= '9') goto yy8; + goto yy4; } else { - if (yych <= 'P') goto yy5; - if (yych != 'R') goto yy11; + if (yych <= 'P') goto yy9; + if (yych == 'R') goto yy11; + goto yy4; } } +yy2: YYDEBUG(2, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) <= '/') goto yy3; - if (yych <= '9') goto yy98; -yy3: YYDEBUG(3, *YYCURSOR); -#line 315 "parse_iso_intervals.re" +#line 309 "parse_iso_intervals.re" { - add_error(s, "Unexpected character"); + s->pos = cursor; s->line++; goto std; } -#line 256 "<stdout>" +#line 254 "<stdout>" yy4: YYDEBUG(4, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy3; - if (yych <= '9') goto yy59; - goto yy3; + ++YYCURSOR; yy5: YYDEBUG(5, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy6; - if (yych <= '9') goto yy12; - if (yych == 'T') goto yy14; +#line 315 "parse_iso_intervals.re" + { + add_error(s, "Unexpected character"); + goto std; + } +#line 265 "<stdout>" yy6: YYDEBUG(6, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(7, *YYCURSOR); +#line 304 "parse_iso_intervals.re" + { + goto std; + } +#line 274 "<stdout>" +yy8: + YYDEBUG(8, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') goto yy5; + if (yych <= '9') goto yy12; + goto yy5; +yy9: + YYDEBUG(9, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') goto yy10; + if (yych <= '9') goto yy14; + if (yych == 'T') goto yy15; +yy10: + YYDEBUG(10, *YYCURSOR); #line 242 "parse_iso_intervals.re" { timelib_sll nr; @@ -310,189 +328,197 @@ yy6: TIMELIB_DEINIT; return TIMELIB_PERIOD; } -#line 314 "<stdout>" -yy7: - YYDEBUG(7, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(8, *YYCURSOR); -#line 304 "parse_iso_intervals.re" - { - goto std; - } -#line 323 "<stdout>" -yy9: - YYDEBUG(9, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(10, *YYCURSOR); -#line 309 "parse_iso_intervals.re" - { - s->pos = cursor; s->line++; - goto std; - } -#line 333 "<stdout>" +#line 332 "<stdout>" yy11: YYDEBUG(11, *YYCURSOR); yych = *++YYCURSOR; - goto yy3; + if (yybm[0+yych] & 128) { + goto yy16; + } + goto yy5; yy12: YYDEBUG(12, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych <= '9') { - if (yych >= '0') goto yy25; - } else { - if (yych == 'D') goto yy24; - } - } else { - if (yych <= 'W') { - if (yych <= 'M') goto yy27; - if (yych >= 'W') goto yy26; - } else { - if (yych == 'Y') goto yy28; - } - } + if (yych <= '/') goto yy13; + if (yych <= '9') goto yy19; yy13: YYDEBUG(13, *YYCURSOR); YYCURSOR = YYMARKER; if (yyaccept == 0) { - goto yy3; + goto yy5; } else { - goto yy6; + goto yy10; } yy14: YYDEBUG(14, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy15; + yych = *++YYCURSOR; + if (yych <= 'L') { + if (yych <= '9') { + if (yych <= '/') goto yy13; + goto yy20; + } else { + if (yych == 'D') goto yy21; + goto yy13; + } + } else { + if (yych <= 'W') { + if (yych <= 'M') goto yy22; + if (yych <= 'V') goto yy13; + goto yy23; + } else { + if (yych == 'Y') goto yy24; + goto yy13; + } } - goto yy6; yy15: YYDEBUG(15, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') goto yy10; + if (yych <= '9') goto yy25; + goto yy10; +yy16: + YYDEBUG(16, *YYCURSOR); ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - YYDEBUG(16, *YYCURSOR); + YYDEBUG(17, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy15; + goto yy16; } + YYDEBUG(18, *YYCURSOR); +#line 207 "parse_iso_intervals.re" + { + DEBUG_OUTPUT("recurrences"); + TIMELIB_INIT; + ptr++; + s->recurrences = timelib_get_unsigned_nr((char **) &ptr, 9); + TIMELIB_DEINIT; + s->have_recurrences = 1; + return TIMELIB_PERIOD; + } +#line 401 "<stdout>" +yy19: + YYDEBUG(19, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy13; + if (yych <= '9') goto yy27; + goto yy13; +yy20: + YYDEBUG(20, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= 'L') { - if (yych == 'H') goto yy19; - goto yy13; + if (yych <= '9') { + if (yych <= '/') goto yy13; + goto yy28; + } else { + if (yych != 'D') goto yy13; + } } else { - if (yych <= 'M') goto yy18; - if (yych != 'S') goto yy13; + if (yych <= 'W') { + if (yych <= 'M') goto yy22; + if (yych <= 'V') goto yy13; + goto yy23; + } else { + if (yych == 'Y') goto yy24; + goto yy13; + } } -yy17: - YYDEBUG(17, *YYCURSOR); +yy21: + YYDEBUG(21, *YYCURSOR); yych = *++YYCURSOR; - goto yy6; -yy18: - YYDEBUG(18, *YYCURSOR); + if (yych == 'T') goto yy15; + goto yy10; +yy22: + YYDEBUG(22, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy6; - if (yych <= '9') goto yy22; - goto yy6; -yy19: - YYDEBUG(19, *YYCURSOR); + if (yych <= '/') goto yy10; + if (yych <= '9') goto yy29; + if (yych == 'T') goto yy15; + goto yy10; +yy23: + YYDEBUG(23, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy6; - if (yych >= ':') goto yy6; -yy20: - YYDEBUG(20, *YYCURSOR); + if (yych <= '/') goto yy10; + if (yych <= '9') goto yy31; + if (yych == 'T') goto yy15; + goto yy10; +yy24: + YYDEBUG(24, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') goto yy10; + if (yych <= '9') goto yy33; + if (yych == 'T') goto yy15; + goto yy10; +yy25: + YYDEBUG(25, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - YYDEBUG(21, *YYCURSOR); - if (yych <= 'L') { + YYDEBUG(26, *YYCURSOR); + if (yych <= 'H') { if (yych <= '/') goto yy13; - if (yych <= '9') goto yy20; + if (yych <= '9') goto yy25; + if (yych <= 'G') goto yy13; + goto yy35; + } else { + if (yych <= 'M') { + if (yych <= 'L') goto yy13; + goto yy36; + } else { + if (yych == 'S') goto yy37; + goto yy13; + } + } +yy27: + YYDEBUG(27, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '-') goto yy38; goto yy13; } else { - if (yych <= 'M') goto yy18; - if (yych == 'S') goto yy17; + if (yych <= '0') goto yy39; + if (yych <= '1') goto yy40; goto yy13; } -yy22: - YYDEBUG(22, *YYCURSOR); - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(23, *YYCURSOR); - if (yych <= '/') goto yy13; - if (yych <= '9') goto yy22; - if (yych == 'S') goto yy17; - goto yy13; -yy24: - YYDEBUG(24, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy14; - goto yy6; -yy25: - YYDEBUG(25, *YYCURSOR); +yy28: + YYDEBUG(28, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'L') { if (yych <= '9') { if (yych <= '/') goto yy13; - goto yy35; + goto yy41; } else { - if (yych == 'D') goto yy24; + if (yych == 'D') goto yy21; goto yy13; } } else { if (yych <= 'W') { - if (yych <= 'M') goto yy27; + if (yych <= 'M') goto yy22; if (yych <= 'V') goto yy13; + goto yy23; } else { - if (yych == 'Y') goto yy28; + if (yych == 'Y') goto yy24; goto yy13; } } -yy26: - YYDEBUG(26, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy6; - if (yych <= '9') goto yy33; - if (yych == 'T') goto yy14; - goto yy6; -yy27: - YYDEBUG(27, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy6; - if (yych <= '9') goto yy31; - if (yych == 'T') goto yy14; - goto yy6; -yy28: - YYDEBUG(28, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy6; - if (yych <= '9') goto yy29; - if (yych == 'T') goto yy14; - goto yy6; yy29: YYDEBUG(29, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; YYDEBUG(30, *YYCURSOR); - if (yych <= 'D') { + if (yych <= 'C') { if (yych <= '/') goto yy13; if (yych <= '9') goto yy29; - if (yych <= 'C') goto yy13; - goto yy24; + goto yy13; } else { - if (yych <= 'M') { - if (yych <= 'L') goto yy13; - goto yy27; - } else { - if (yych == 'W') goto yy26; - goto yy13; - } + if (yych <= 'D') goto yy21; + if (yych == 'W') goto yy23; + goto yy13; } yy31: YYDEBUG(31, *YYCURSOR); @@ -500,313 +526,372 @@ yy31: if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; YYDEBUG(32, *YYCURSOR); - if (yych <= 'C') { - if (yych <= '/') goto yy13; - if (yych <= '9') goto yy31; - goto yy13; - } else { - if (yych <= 'D') goto yy24; - if (yych == 'W') goto yy26; - goto yy13; - } + if (yych <= '/') goto yy13; + if (yych <= '9') goto yy31; + if (yych == 'D') goto yy21; + goto yy13; yy33: YYDEBUG(33, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; YYDEBUG(34, *YYCURSOR); - if (yych <= '/') goto yy13; - if (yych <= '9') goto yy33; - if (yych == 'D') goto yy24; - goto yy13; -yy35: - YYDEBUG(35, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych <= '9') { - if (yych <= '/') goto yy13; - } else { - if (yych == 'D') goto yy24; - goto yy13; - } + if (yych <= 'D') { + if (yych <= '/') goto yy13; + if (yych <= '9') goto yy33; + if (yych <= 'C') goto yy13; + goto yy21; } else { - if (yych <= 'W') { - if (yych <= 'M') goto yy27; - if (yych <= 'V') goto yy13; - goto yy26; + if (yych <= 'M') { + if (yych <= 'L') goto yy13; + goto yy22; } else { - if (yych == 'Y') goto yy28; + if (yych == 'W') goto yy23; goto yy13; } } +yy35: + YYDEBUG(35, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') goto yy10; + if (yych <= '9') goto yy42; + goto yy10; +yy36: YYDEBUG(36, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '-') goto yy39; + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') goto yy10; + if (yych <= '9') goto yy44; + goto yy10; +yy37: YYDEBUG(37, *YYCURSOR); + ++YYCURSOR; + goto yy10; +yy38: + YYDEBUG(38, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '0') goto yy40; - if (yych <= '1') goto yy41; + if (yych <= '0') goto yy46; + if (yych <= '1') goto yy47; goto yy13; -yy38: - YYDEBUG(38, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); - yych = *YYCURSOR; yy39: YYDEBUG(39, *YYCURSOR); - if (yych <= 'L') { - if (yych <= '9') { - if (yych <= '/') goto yy13; - goto yy38; - } else { - if (yych == 'D') goto yy24; - goto yy13; - } - } else { - if (yych <= 'W') { - if (yych <= 'M') goto yy27; - if (yych <= 'V') goto yy13; - goto yy26; - } else { - if (yych == 'Y') goto yy28; - goto yy13; - } - } + yych = *++YYCURSOR; + if (yych <= '0') goto yy13; + if (yych <= '9') goto yy48; + goto yy13; yy40: YYDEBUG(40, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '9') goto yy42; + if (yych <= '2') goto yy48; goto yy13; yy41: YYDEBUG(41, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych >= '3') goto yy13; + if (yych == '-') goto yy49; + goto yy51; yy42: YYDEBUG(42, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '-') goto yy13; + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; YYDEBUG(43, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '0') goto yy44; - if (yych <= '2') goto yy45; - if (yych <= '3') goto yy46; - goto yy13; + if (yych <= 'L') { + if (yych <= '/') goto yy13; + if (yych <= '9') goto yy42; + goto yy13; + } else { + if (yych <= 'M') goto yy36; + if (yych == 'S') goto yy37; + goto yy13; + } yy44: YYDEBUG(44, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '9') goto yy47; - goto yy13; -yy45: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; YYDEBUG(45, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '9') goto yy47; + if (yych <= '9') goto yy44; + if (yych == 'S') goto yy37; goto yy13; yy46: YYDEBUG(46, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych >= '2') goto yy13; + if (yych <= '0') goto yy13; + if (yych <= '9') goto yy52; + goto yy13; yy47: YYDEBUG(47, *YYCURSOR); yych = *++YYCURSOR; - if (yych != 'T') goto yy13; + if (yych <= '/') goto yy13; + if (yych <= '2') goto yy52; + goto yy13; +yy48: YYDEBUG(48, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '1') goto yy49; - if (yych <= '2') goto yy50; + if (yych <= '0') goto yy53; + if (yych <= '2') goto yy54; + if (yych <= '3') goto yy55; goto yy13; yy49: YYDEBUG(49, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '9') goto yy51; + if (yych <= '0') goto yy56; + if (yych <= '1') goto yy57; goto yy13; yy50: YYDEBUG(50, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych >= '5') goto yy13; + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); + yych = *YYCURSOR; yy51: YYDEBUG(51, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != ':') goto yy13; + if (yych <= 'L') { + if (yych <= '9') { + if (yych <= '/') goto yy13; + goto yy50; + } else { + if (yych == 'D') goto yy21; + goto yy13; + } + } else { + if (yych <= 'W') { + if (yych <= 'M') goto yy22; + if (yych <= 'V') goto yy13; + goto yy23; + } else { + if (yych == 'Y') goto yy24; + goto yy13; + } + } +yy52: YYDEBUG(52, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych >= '6') goto yy13; + if (yych == '-') goto yy58; + goto yy13; +yy53: YYDEBUG(53, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych >= ':') goto yy13; + if (yych <= '0') goto yy13; + if (yych <= '9') goto yy59; + goto yy13; +yy54: YYDEBUG(54, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ':') goto yy13; + if (yych <= '/') goto yy13; + if (yych <= '9') goto yy59; + goto yy13; +yy55: YYDEBUG(55, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych >= '6') goto yy13; + if (yych <= '1') goto yy59; + goto yy13; +yy56: YYDEBUG(56, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych >= ':') goto yy13; + if (yych <= '9') goto yy60; + goto yy13; +yy57: YYDEBUG(57, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= '/') goto yy13; + if (yych <= '2') goto yy60; + goto yy13; +yy58: YYDEBUG(58, *YYCURSOR); -#line 284 "parse_iso_intervals.re" - { - DEBUG_OUTPUT("combinedrep"); - TIMELIB_INIT; - s->period->y = timelib_get_unsigned_nr((char **) &ptr, 4); - ptr++; - s->period->m = timelib_get_unsigned_nr((char **) &ptr, 2); - ptr++; - s->period->d = timelib_get_unsigned_nr((char **) &ptr, 2); - ptr++; - s->period->h = timelib_get_unsigned_nr((char **) &ptr, 2); - ptr++; - s->period->i = timelib_get_unsigned_nr((char **) &ptr, 2); - ptr++; - s->period->s = timelib_get_unsigned_nr((char **) &ptr, 2); - s->have_period = 1; - TIMELIB_DEINIT; - return TIMELIB_PERIOD; - } -#line 682 "<stdout>" + yych = *++YYCURSOR; + if (yych <= '/') goto yy13; + if (yych <= '0') goto yy61; + if (yych <= '2') goto yy62; + if (yych <= '3') goto yy63; + goto yy13; yy59: YYDEBUG(59, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych >= ':') goto yy13; + if (yych == 'T') goto yy64; + goto yy13; +yy60: YYDEBUG(60, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych >= ':') goto yy13; + if (yych == '-') goto yy65; + goto yy13; +yy61: YYDEBUG(61, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '-') goto yy64; - goto yy13; - } else { - if (yych <= '0') goto yy62; - if (yych <= '1') goto yy63; - goto yy13; - } + if (yych <= '0') goto yy13; + if (yych <= '9') goto yy66; + goto yy13; yy62: YYDEBUG(62, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '0') goto yy13; - if (yych <= '9') goto yy85; + if (yych <= '/') goto yy13; + if (yych <= '9') goto yy66; goto yy13; yy63: YYDEBUG(63, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '2') goto yy85; + if (yych <= '1') goto yy66; goto yy13; yy64: YYDEBUG(64, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '0') goto yy65; - if (yych <= '1') goto yy66; + if (yych <= '1') goto yy67; + if (yych <= '2') goto yy68; goto yy13; yy65: YYDEBUG(65, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '0') goto yy13; - if (yych <= '9') goto yy67; + if (yych <= '/') goto yy13; + if (yych <= '2') goto yy69; + if (yych <= '3') goto yy70; goto yy13; yy66: YYDEBUG(66, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych >= '3') goto yy13; + if (yych == 'T') goto yy71; + goto yy13; yy67: YYDEBUG(67, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '-') goto yy13; + if (yych <= '/') goto yy13; + if (yych <= '9') goto yy72; + goto yy13; +yy68: YYDEBUG(68, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '0') goto yy69; - if (yych <= '2') goto yy70; - if (yych <= '3') goto yy71; + if (yych <= '4') goto yy72; goto yy13; yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '0') goto yy13; - if (yych <= '9') goto yy72; + if (yych <= '/') goto yy13; + if (yych <= '9') goto yy73; goto yy13; yy70: YYDEBUG(70, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '9') goto yy72; + if (yych <= '1') goto yy73; goto yy13; yy71: YYDEBUG(71, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych >= '2') goto yy13; + if (yych <= '1') goto yy74; + if (yych <= '2') goto yy75; + goto yy13; yy72: YYDEBUG(72, *YYCURSOR); yych = *++YYCURSOR; - if (yych != 'T') goto yy13; + if (yych <= '/') goto yy13; + if (yych <= '5') goto yy76; + goto yy13; +yy73: YYDEBUG(73, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '1') goto yy74; - if (yych <= '2') goto yy75; + if (yych == 'T') goto yy77; goto yy13; yy74: YYDEBUG(74, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '9') goto yy76; + if (yych <= '9') goto yy78; goto yy13; yy75: YYDEBUG(75, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych >= '5') goto yy13; + if (yych <= '4') goto yy78; + goto yy13; yy76: YYDEBUG(76, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ':') goto yy13; + if (yych <= '/') goto yy13; + if (yych <= '9') goto yy79; + goto yy13; +yy77: YYDEBUG(77, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych >= '6') goto yy13; + if (yych <= '1') goto yy80; + if (yych <= '2') goto yy81; + goto yy13; +yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych >= ':') goto yy13; + if (yych == ':') goto yy82; + goto yy13; +yy79: YYDEBUG(79, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ':') goto yy13; + if (yych <= '/') goto yy13; + if (yych <= '5') goto yy83; + goto yy13; +yy80: YYDEBUG(80, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych >= '6') goto yy13; + if (yych <= '9') goto yy84; + goto yy13; +yy81: YYDEBUG(81, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych >= ':') goto yy13; + if (yych <= '4') goto yy84; + goto yy13; +yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; - if (yych != 'Z') goto yy13; + if (yych <= '/') goto yy13; + if (yych <= '5') goto yy85; + goto yy13; yy83: YYDEBUG(83, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= '/') goto yy13; + if (yych <= '9') goto yy86; + goto yy13; +yy84: YYDEBUG(84, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == ':') goto yy87; + goto yy13; +yy85: + YYDEBUG(85, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy13; + if (yych <= '9') goto yy88; + goto yy13; +yy86: + YYDEBUG(86, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Z') goto yy89; + goto yy13; +yy87: + YYDEBUG(87, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy13; + if (yych <= '5') goto yy91; + goto yy13; +yy88: + YYDEBUG(88, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == ':') goto yy79; + goto yy13; +yy89: + YYDEBUG(89, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(90, *YYCURSOR); #line 218 "parse_iso_intervals.re" { timelib_time *current; @@ -830,54 +915,15 @@ yy83: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 834 "<stdout>" -yy85: - YYDEBUG(85, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '0') goto yy86; - if (yych <= '2') goto yy87; - if (yych <= '3') goto yy88; - goto yy13; -yy86: - YYDEBUG(86, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '0') goto yy13; - if (yych <= '9') goto yy89; - goto yy13; -yy87: - YYDEBUG(87, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '9') goto yy89; - goto yy13; -yy88: - YYDEBUG(88, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych >= '2') goto yy13; -yy89: - YYDEBUG(89, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != 'T') goto yy13; - YYDEBUG(90, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '1') goto yy91; - if (yych <= '2') goto yy92; - goto yy13; +#line 919 "<stdout>" yy91: YYDEBUG(91, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '9') goto yy93; - goto yy13; -yy92: + if (yych >= ':') goto yy13; YYDEBUG(92, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych >= '5') goto yy13; -yy93: + if (yych != ':') goto yy13; YYDEBUG(93, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; @@ -887,38 +933,28 @@ yy93: if (yych <= '/') goto yy13; if (yych >= ':') goto yy13; YYDEBUG(95, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych >= '6') goto yy13; - YYDEBUG(96, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych >= ':') goto yy13; - YYDEBUG(97, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Z') goto yy83; - goto yy13; -yy98: - YYDEBUG(98, *YYCURSOR); ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(99, *YYCURSOR); - if (yych <= '/') goto yy100; - if (yych <= '9') goto yy98; -yy100: - YYDEBUG(100, *YYCURSOR); -#line 207 "parse_iso_intervals.re" + YYDEBUG(96, *YYCURSOR); +#line 284 "parse_iso_intervals.re" { - DEBUG_OUTPUT("recurrences"); + DEBUG_OUTPUT("combinedrep"); TIMELIB_INIT; + s->period->y = timelib_get_unsigned_nr((char **) &ptr, 4); ptr++; - s->recurrences = timelib_get_unsigned_nr((char **) &ptr, 9); + s->period->m = timelib_get_unsigned_nr((char **) &ptr, 2); + ptr++; + s->period->d = timelib_get_unsigned_nr((char **) &ptr, 2); + ptr++; + s->period->h = timelib_get_unsigned_nr((char **) &ptr, 2); + ptr++; + s->period->i = timelib_get_unsigned_nr((char **) &ptr, 2); + ptr++; + s->period->s = timelib_get_unsigned_nr((char **) &ptr, 2); + s->have_period = 1; TIMELIB_DEINIT; - s->have_recurrences = 1; return TIMELIB_PERIOD; } -#line 922 "<stdout>" +#line 958 "<stdout>" } #line 319 "parse_iso_intervals.re" @@ -929,6 +965,7 @@ yy100: #define YYMAXFILL 20 + void timelib_strtointerval(char *s, size_t len, timelib_time **begin, timelib_time **end, timelib_rel_time **period, int *recurrences, |