sclass EnglishDateParser > DateStructures { bool assumeFuture = true; // e.g. for "tuesday" [not used] LS tok; ItIt parse(S s) { tok = javaTok(s); new L out; L> years = lazyListFromIterator(nestedIterator parseYear(lai_codeTokens(tok)); print(+years); out.addAll(years); for (ParsedWithTokens year : years) for (slash : parseFixedToken("/", year.remaining()) out.add(pwt_combine(year!, year, slash)); ret out; } 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)); } }