Warning: session_start(): open(/var/lib/php/sessions/sess_5ej8dfc33nl0462isht3p0ee02, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
//import static main.DateStructures.*;
sclass EnglishDateParser > DateStructures {
bool assumeFuture = true; // e.g. for "tuesday" [not used]
SomeDate parse(S s) null {
new ProbabilisticParser1 parser;
// action that parses a number
ProbabilisticParser1.Action number = parser.new Any {
double calcProbabilityForMatchedText(S s) {
ret isInteger(s) ? 100 : 50;
}
};
LS tok = javaTok(s);
// YMD rule
parser.addState(tok, parser.ruleFromActions(
number,
parser.new ConsumeToken("/"),
number,
parser.new ConsumeToken("/"),
number
)).userObject = func(Matches m) -> SomeDate {
new Day(parseInt($3), new Month(parseInt($2), new Year(parseInt($1))))
};
// weekday rule
parser.addState(tok, parser.ruleFromActions(
parser.new ConsumeOneOfTokens(asCISet(englishWeekdays())),
)).userObject = func(Matches m) -> SomeDate {
new Weekday(parseEnglishWeekday(print("day", $1)))
};
// "next " rule
parser.addState(tok, parser.ruleFromActions(
parser.new ConsumeToken("next"),
parser.new ConsumeOneOfTokens(asCISet(englishWeekdays())),
)).userObject = func(Matches m) -> SomeDate {
new Weekday(parseEnglishWeekday(print("day", $1)), new CurrentWeekPlus(1))
};
parser.think();
ProbabilisticParser1.State state = parser.bestDoneState();
print(state);
if (state != null) {
Matches m = parser.stateToMatches(state, action -> !action instanceof ProbabilisticParser1.ConsumeToken);
print(m);
ret (SomeDate) callF(state.userObject, m);
}
}
}