//import static main.DateStructures.*; sclass EnglishDateParser > DateStructures { bool assumeFuture = true; // e.g. for "tuesday" void init { } SomeDate parse(S s) null { init(); new ProbabilisticParser1 parser; ProbabilisticParser1.Action number = parser.new Any { double calcProbabilityForMatchedText(S s) { ret isInteger(s) ? 100 : 50; } }; BasicLogicRule rule = parser.ruleFromActions( number, parser.new ConsumeToken("/"), number, parser.new ConsumeToken("/"), number ); parser.parse(rule, s); ProbabilisticParser1.State state = parser.bestDoneState(); print(state); if (state != null) { Matches m = parser.stateToMatches(state); print(m); ret new Day(parseInt($3), new Month(parseInt($2), new Year(parseInt($1)))); } } }