sclass EnglishDateParser > DateStructures { bool assumeFuture = true; // e.g. for "tuesday" [not used] LS tok; ItIt> parse(S s) { tok = javaTok(s); ItIt> years = nestedIterator parseYear(lai_codeTokens(tok)); ret nestedIterator(years, year -> itemPlusIterator( pwt_generalize(year), pwt_generalizeIterator( mapI(parseFixedToken("/", year.remaining()), slash -> pwt_combine((O) year!, year, slash))))); // := "/" "/" //between(parseInt(s), 1900, 2100) //ret nestedIterator parseNumber(lai_codeTokenIndices(tok)); } ItIt> parseNumber(ListAndIndex toParse) { ret mapI_nonNulls(pwt_followingTokens(1, 2, toParse), p -> isInteger(p!) ? p.withValue(parseInt(p!)) : null); } ItIt> parseYear(ListAndIndex toParse) { ret filterI(parseNumber(toParse), p -> between(p!, 1900, 2100)); } ItIt> parseFixedToken(S token, ListAndIndex toParse) { ret filterI(pwt_followingTokens(1, 2, toParse), p -> eqic(p!, token)); } }