Warning: session_start(): open(/var/lib/php/sessions/sess_gmqrv9u0345d5e2dj6uoohaqo9, 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
static class Patterns extends P {
Map,S> map = new HashMap,S>();
int n;
*(int *n) {
}
S read(S file, L tok) {
prepare(file);
while (tok.size() > seen) {
++seen;
if (seen > n)
put(new ArrayList(tok.subList(seen-n-1, seen-1)), tok.get(seen-1));
}
if (tok.size() >= n) {
L l = new ArrayList(tok.subList(tok.size()-n, tok.size()));
for (L pl : map.keySet()) {
S pr = map.get(pl);
//print("pl: " + structure(pl) + ", l: " + structure(l));
Map m = makeMapPrefix(pl, l);
if (m != null) {
S result = m.get(pr);
//print("map: " + structure(m) + ", result: " + quote(result));
ret result;
}
}
}
return null;
}
void put(L l, S r) {
if (isPattern(l, r)) {
new L l2;
l2.addAll(l);
l2.add(r);
//print("pattern: " + structure(l2));
map.put(l, r);
}
}
boolean isPattern(L l, S r) {
/*new Set set;
set.addAll(l);
set.add(r);
return set.size() < l.size()+1;*/
return l.contains(r) && interestingToken(r);
}
boolean interestingToken(S r) {
//return !r.trim().equals("");
for (int i = 0; i < r.length(); i++)
if (Character.isLetter(r.charAt(i)))
ret true;
ret false;
}
P derive() {
Patterns t = new Patterns(n);
t.map = new DerivedHashMap,S>(map);
return t;
}
P clear() {
return new Patterns(n);
}
}