sclass EnglishDateParser > DateStructures { bool assumeFuture = true; // e.g. for "tuesday" [not used] LS tok; ItIt> parse(S s) { tok = javaTok(s); It> years = nestedIterator parseYear(lai_codeTokenIndices(tok)); ret mapI(years, year -> itemPlusIterator(year, parseFixedToken("/", year.remaining())); // := "/" "/" //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)); } }