diff options
Diffstat (limited to 'ext/date/lib/parse_iso_intervals.c')
-rw-r--r-- | ext/date/lib/parse_iso_intervals.c | 789 |
1 files changed, 376 insertions, 413 deletions
diff --git a/ext/date/lib/parse_iso_intervals.c b/ext/date/lib/parse_iso_intervals.c index 80c20b4f70..4f7e2d439c 100644 --- a/ext/date/lib/parse_iso_intervals.c +++ b/ext/date/lib/parse_iso_intervals.c @@ -1,4 +1,4 @@ -/* Generated by re2c 2.0.3 on Mon Aug 31 11:41:00 2020 */ +/* Generated by re2c 0.15.3 on Mon Dec 21 10:25:59 2020 */ #line 1 "parse_iso_intervals.re" /* * The MIT License (MIT) @@ -221,72 +221,54 @@ std: yych = *YYCURSOR; if (yych <= ',') { if (yych <= '\n') { - if (yych <= 0x00) goto yy2; - if (yych <= 0x08) goto yy4; - if (yych <= '\t') goto yy6; + if (yych <= 0x00) goto yy9; + if (yych <= 0x08) goto yy11; + if (yych <= '\t') goto yy7; + goto yy9; } else { - if (yych == ' ') goto yy6; - if (yych <= '+') goto yy4; - goto yy6; + if (yych == ' ') goto yy7; + if (yych <= '+') goto yy11; + goto yy7; } } else { if (yych <= 'O') { - if (yych <= '-') goto yy4; - if (yych <= '/') goto yy6; - if (yych <= '9') goto yy8; - goto yy4; + if (yych <= '-') goto yy11; + if (yych <= '/') goto yy7; + if (yych <= '9') goto yy4; + goto yy11; } else { - if (yych <= 'P') goto yy9; - if (yych == 'R') goto yy11; - goto yy4; + if (yych <= 'P') goto yy5; + if (yych != 'R') goto yy11; } } -yy2: YYDEBUG(2, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) <= '/') goto yy3; + if (yych <= '9') goto yy98; +yy3: YYDEBUG(3, *YYCURSOR); -#line 309 "parse_iso_intervals.re" - { - s->pos = cursor; s->line++; - goto std; - } -#line 254 "<stdout>" -yy4: - YYDEBUG(4, *YYCURSOR); - ++YYCURSOR; -yy5: - YYDEBUG(5, *YYCURSOR); #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); +#line 256 "<stdout>" +yy4: + YYDEBUG(4, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy5; - if (yych <= '9') goto yy12; - goto yy5; -yy9: - YYDEBUG(9, *YYCURSOR); + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy59; + goto yy3; +yy5: + YYDEBUG(5, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy10; - if (yych <= '9') goto yy14; - if (yych == 'T') goto yy15; -yy10: - YYDEBUG(10, *YYCURSOR); + if (yych <= '/') goto yy6; + if (yych <= '9') goto yy12; + if (yych == 'T') goto yy14; +yy6: + YYDEBUG(6, *YYCURSOR); #line 242 "parse_iso_intervals.re" { timelib_sll nr; @@ -328,197 +310,189 @@ yy10: TIMELIB_DEINIT; return TIMELIB_PERIOD; } -#line 332 "<stdout>" +#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>" yy11: YYDEBUG(11, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy16; - } - goto yy5; + goto yy3; yy12: YYDEBUG(12, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '9') goto yy19; -yy13: - YYDEBUG(13, *YYCURSOR); - YYCURSOR = YYMARKER; - if (yyaccept == 0) { - goto yy5; - } else { - goto yy10; - } -yy14: - YYDEBUG(14, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'L') { if (yych <= '9') { - if (yych <= '/') goto yy13; - goto yy20; + if (yych >= '0') goto yy25; } else { - if (yych == 'D') goto yy21; - goto yy13; + if (yych == 'D') goto yy24; } } else { if (yych <= 'W') { - if (yych <= 'M') goto yy22; - if (yych <= 'V') goto yy13; - goto yy23; + if (yych <= 'M') goto yy27; + if (yych >= 'W') goto yy26; } else { - if (yych == 'Y') goto yy24; - goto yy13; + if (yych == 'Y') goto yy28; } } -yy15: - YYDEBUG(15, *YYCURSOR); +yy13: + YYDEBUG(13, *YYCURSOR); + YYCURSOR = YYMARKER; + if (yyaccept == 0) { + goto yy3; + } else { + goto yy6; + } +yy14: + YYDEBUG(14, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy10; - if (yych <= '9') goto yy25; - goto yy10; -yy16: - YYDEBUG(16, *YYCURSOR); + if (yybm[0+yych] & 128) { + goto yy15; + } + goto yy6; +yy15: + YYDEBUG(15, *YYCURSOR); ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - YYDEBUG(17, *YYCURSOR); + YYDEBUG(16, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy16; + goto yy15; } - 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 <= '9') { - if (yych <= '/') goto yy13; - goto yy28; - } else { - if (yych != 'D') goto yy13; - } + if (yych == 'H') goto yy19; + 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; - } + if (yych <= 'M') goto yy18; + if (yych != 'S') goto yy13; } -yy21: - YYDEBUG(21, *YYCURSOR); +yy17: + YYDEBUG(17, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy15; - goto yy10; -yy22: - YYDEBUG(22, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy10; - if (yych <= '9') goto yy29; - if (yych == 'T') goto yy15; - goto yy10; -yy23: - YYDEBUG(23, *YYCURSOR); + goto yy6; +yy18: + YYDEBUG(18, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy10; - if (yych <= '9') goto yy31; - if (yych == 'T') goto yy15; - goto yy10; -yy24: - YYDEBUG(24, *YYCURSOR); + if (yych <= '/') goto yy6; + if (yych <= '9') goto yy22; + goto yy6; +yy19: + YYDEBUG(19, *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); + if (yych <= '/') goto yy6; + if (yych >= ':') goto yy6; +yy20: + YYDEBUG(20, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - YYDEBUG(26, *YYCURSOR); - if (yych <= 'H') { + YYDEBUG(21, *YYCURSOR); + if (yych <= 'L') { if (yych <= '/') goto yy13; - 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; + if (yych <= '9') goto yy20; goto yy13; } else { - if (yych <= '0') goto yy39; - if (yych <= '1') goto yy40; + if (yych <= 'M') goto yy18; + if (yych == 'S') goto yy17; goto yy13; } -yy28: - YYDEBUG(28, *YYCURSOR); +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); yych = *++YYCURSOR; if (yych <= 'L') { if (yych <= '9') { if (yych <= '/') goto yy13; - goto yy41; + goto yy35; } else { - if (yych == 'D') goto yy21; + if (yych == 'D') goto yy24; goto yy13; } } else { if (yych <= 'W') { - if (yych <= 'M') goto yy22; + if (yych <= 'M') goto yy27; if (yych <= 'V') goto yy13; - goto yy23; } else { - if (yych == 'Y') goto yy24; + if (yych == 'Y') goto yy28; 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 <= 'C') { + if (yych <= 'D') { if (yych <= '/') goto yy13; if (yych <= '9') goto yy29; - goto yy13; + if (yych <= 'C') goto yy13; + goto yy24; } else { - if (yych <= 'D') goto yy21; - if (yych == 'W') goto yy23; - goto yy13; + if (yych <= 'M') { + if (yych <= 'L') goto yy13; + goto yy27; + } else { + if (yych == 'W') goto yy26; + goto yy13; + } } yy31: YYDEBUG(31, *YYCURSOR); @@ -526,372 +500,313 @@ yy31: if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; YYDEBUG(32, *YYCURSOR); - if (yych <= '/') goto yy13; - if (yych <= '9') goto yy31; - if (yych == 'D') goto yy21; - goto yy13; + 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; + } yy33: YYDEBUG(33, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; YYDEBUG(34, *YYCURSOR); - if (yych <= 'D') { - if (yych <= '/') goto yy13; - if (yych <= '9') goto yy33; - if (yych <= 'C') goto yy13; - goto yy21; + 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; + } } else { - if (yych <= 'M') { - if (yych <= 'L') goto yy13; - goto yy22; + if (yych <= 'W') { + if (yych <= 'M') goto yy27; + if (yych <= 'V') goto yy13; + goto yy26; } else { - if (yych == 'W') goto yy23; + if (yych == 'Y') goto yy28; 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); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy10; - if (yych <= '9') goto yy44; - goto yy10; -yy37: + yych = *++YYCURSOR; + if (yych != '-') goto yy39; YYDEBUG(37, *YYCURSOR); - ++YYCURSOR; - goto yy10; -yy38: - YYDEBUG(38, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '0') goto yy46; - if (yych <= '1') goto yy47; + if (yych <= '0') goto yy40; + if (yych <= '1') goto yy41; goto yy13; +yy38: + YYDEBUG(38, *YYCURSOR); + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); + yych = *YYCURSOR; yy39: YYDEBUG(39, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '0') goto yy13; - if (yych <= '9') goto yy48; - goto yy13; + 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; + } + } yy40: YYDEBUG(40, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '2') goto yy48; + if (yych <= '9') goto yy42; goto yy13; yy41: YYDEBUG(41, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '-') goto yy49; - goto yy51; + if (yych <= '/') goto yy13; + if (yych >= '3') goto yy13; yy42: YYDEBUG(42, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych != '-') goto yy13; YYDEBUG(43, *YYCURSOR); - 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; - } + yych = *++YYCURSOR; + if (yych <= '/') goto yy13; + if (yych <= '0') goto yy44; + if (yych <= '2') goto yy45; + if (yych <= '3') goto yy46; + goto yy13; yy44: YYDEBUG(44, *YYCURSOR); - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych <= '/') goto yy13; + if (yych <= '9') goto yy47; + goto yy13; +yy45: YYDEBUG(45, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '9') goto yy44; - if (yych == 'S') goto yy37; + if (yych <= '9') goto yy47; goto yy13; yy46: YYDEBUG(46, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '0') goto yy13; - if (yych <= '9') goto yy52; - goto yy13; + if (yych <= '/') goto yy13; + if (yych >= '2') goto yy13; yy47: YYDEBUG(47, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '2') goto yy52; - goto yy13; -yy48: + if (yych != 'T') goto yy13; YYDEBUG(48, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '0') goto yy53; - if (yych <= '2') goto yy54; - if (yych <= '3') goto yy55; + if (yych <= '1') goto yy49; + if (yych <= '2') goto yy50; goto yy13; yy49: YYDEBUG(49, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '0') goto yy56; - if (yych <= '1') goto yy57; + if (yych <= '9') goto yy51; goto yy13; yy50: YYDEBUG(50, *YYCURSOR); - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if (yych <= '/') goto yy13; + if (yych >= '5') goto yy13; yy51: YYDEBUG(51, *YYCURSOR); - 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: + yych = *++YYCURSOR; + if (yych != ':') goto yy13; YYDEBUG(52, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '-') goto yy58; - goto yy13; -yy53: + if (yych <= '/') goto yy13; + if (yych >= '6') goto yy13; YYDEBUG(53, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '0') goto yy13; - if (yych <= '9') goto yy59; - goto yy13; -yy54: + if (yych <= '/') goto yy13; + if (yych >= ':') goto yy13; YYDEBUG(54, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '9') goto yy59; - goto yy13; -yy55: + if (yych != ':') goto yy13; YYDEBUG(55, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '1') goto yy59; - goto yy13; -yy56: + if (yych >= '6') goto yy13; YYDEBUG(56, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '9') goto yy60; - goto yy13; -yy57: + if (yych >= ':') goto yy13; YYDEBUG(57, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '2') goto yy60; - goto yy13; -yy58: + ++YYCURSOR; YYDEBUG(58, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '0') goto yy61; - if (yych <= '2') goto yy62; - if (yych <= '3') goto yy63; - goto yy13; +#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>" yy59: YYDEBUG(59, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy64; - goto yy13; -yy60: + if (yych <= '/') goto yy13; + if (yych >= ':') goto yy13; YYDEBUG(60, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '-') goto yy65; - goto yy13; -yy61: + if (yych <= '/') goto yy13; + if (yych >= ':') goto yy13; YYDEBUG(61, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '0') goto yy13; - if (yych <= '9') goto yy66; - goto yy13; + if (yych <= '/') { + if (yych == '-') goto yy64; + goto yy13; + } else { + if (yych <= '0') goto yy62; + if (yych <= '1') goto yy63; + goto yy13; + } yy62: YYDEBUG(62, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '9') goto yy66; + if (yych <= '0') goto yy13; + if (yych <= '9') goto yy85; goto yy13; yy63: YYDEBUG(63, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '1') goto yy66; + if (yych <= '2') goto yy85; goto yy13; yy64: YYDEBUG(64, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '1') goto yy67; - if (yych <= '2') goto yy68; + if (yych <= '0') goto yy65; + if (yych <= '1') goto yy66; goto yy13; yy65: YYDEBUG(65, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '2') goto yy69; - if (yych <= '3') goto yy70; + if (yych <= '0') goto yy13; + if (yych <= '9') goto yy67; goto yy13; yy66: YYDEBUG(66, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy71; - goto yy13; + if (yych <= '/') goto yy13; + if (yych >= '3') goto yy13; yy67: YYDEBUG(67, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '9') goto yy72; - goto yy13; -yy68: + if (yych != '-') goto yy13; YYDEBUG(68, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '4') goto yy72; + if (yych <= '0') goto yy69; + if (yych <= '2') goto yy70; + if (yych <= '3') goto yy71; goto yy13; yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '9') goto yy73; + if (yych <= '0') goto yy13; + if (yych <= '9') goto yy72; goto yy13; yy70: YYDEBUG(70, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '1') goto yy73; + if (yych <= '9') goto yy72; goto yy13; yy71: YYDEBUG(71, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '1') goto yy74; - if (yych <= '2') goto yy75; - goto yy13; + if (yych >= '2') goto yy13; yy72: YYDEBUG(72, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '5') goto yy76; - goto yy13; -yy73: + if (yych != 'T') goto yy13; YYDEBUG(73, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy77; + if (yych <= '/') goto yy13; + if (yych <= '1') goto yy74; + if (yych <= '2') goto yy75; goto yy13; yy74: YYDEBUG(74, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '9') goto yy78; + if (yych <= '9') goto yy76; goto yy13; yy75: YYDEBUG(75, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '4') goto yy78; - goto yy13; + if (yych >= '5') goto yy13; yy76: YYDEBUG(76, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '9') goto yy79; - goto yy13; -yy77: + if (yych != ':') goto yy13; YYDEBUG(77, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '1') goto yy80; - if (yych <= '2') goto yy81; - goto yy13; -yy78: + if (yych >= '6') goto yy13; YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; - if (yych == ':') goto yy82; - goto yy13; -yy79: + if (yych <= '/') goto yy13; + if (yych >= ':') goto yy13; YYDEBUG(79, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '5') goto yy83; - goto yy13; -yy80: + if (yych != ':') goto yy13; YYDEBUG(80, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '9') goto yy84; - goto yy13; -yy81: + if (yych >= '6') goto yy13; YYDEBUG(81, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych <= '4') goto yy84; - goto yy13; -yy82: + if (yych >= ':') goto yy13; YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '5') goto yy85; - goto yy13; + if (yych != 'Z') goto yy13; yy83: YYDEBUG(83, *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); + YYDEBUG(84, *YYCURSOR); #line 218 "parse_iso_intervals.re" { timelib_time *current; @@ -915,15 +830,54 @@ yy89: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 919 "<stdout>" +#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; yy91: YYDEBUG(91, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; - if (yych >= ':') goto yy13; + if (yych <= '9') goto yy93; + goto yy13; +yy92: YYDEBUG(92, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ':') goto yy13; + if (yych <= '/') goto yy13; + if (yych >= '5') goto yy13; +yy93: YYDEBUG(93, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') goto yy13; @@ -933,28 +887,38 @@ yy91: if (yych <= '/') goto yy13; if (yych >= ':') goto yy13; YYDEBUG(95, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= '/') goto yy13; + if (yych >= '6') goto yy13; YYDEBUG(96, *YYCURSOR); -#line 284 "parse_iso_intervals.re" + 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" { - DEBUG_OUTPUT("combinedrep"); + DEBUG_OUTPUT("recurrences"); 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; + s->recurrences = timelib_get_unsigned_nr((char **) &ptr, 9); TIMELIB_DEINIT; + s->have_recurrences = 1; return TIMELIB_PERIOD; } -#line 958 "<stdout>" +#line 922 "<stdout>" } #line 319 "parse_iso_intervals.re" @@ -965,7 +929,6 @@ yy91: #define YYMAXFILL 20 - void timelib_strtointerval(char *s, size_t len, timelib_time **begin, timelib_time **end, timelib_rel_time **period, int *recurrences, |