Warning: session_start(): open(/var/lib/php/sessions/sess_m6ug140i0hfn7n9mb3t13iphqb, 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
abstract sclass WordTokRule extends Attractor implements RuleOnTok, RuleOnString, RuleOnExtTok, RuleOnExtS {
S pattern; // example sentence
Set vars; // list of the variable words in the sentence
bool debug;
transient LS tokPat; // parsed pattern
transient SS map; // not null if there is a match
*() {}
*(S *pattern, S... vars) { this.vars = litciset(vars); }
*(S *pattern, Set *vars) {}
LS tokPat() {
if (tokPat == null) tokPat = wordTok(pattern);
ret tokPat;
}
public final bool matches(ExtS s) {
process(s);
ret matched();
}
public final bool matches(S s) {
process(s);
ret matched();
}
public void process(S s) {
process(ext(s));
}
public void process(ExtS s) {
processExtTok(extLift(s, wordTok(s!));
}
public void processTok(LS tok) {
processExtTok(ext(tok));
}
public void processExtTok(Ext tok) {
preCheck();
map = nullIfContainsKeysOtherThan(gazelle_zipTwoTokenizationsToMap(tokPat(), tok!), vars);
if (debug) print(pattern + " + " + join(tok!) + " => " + map);
}
void preCheck {}
bool matched() { ret map != null; }
S getVar(S name) { ret getOrKeep(map, name); }
}