Warning: session_start(): open(/var/lib/php/sessions/sess_n4nad5kv2qp5qlo01fd5m3fdb8, 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
sbool translateUsingWordTreeC_debug;
sbool translateUsingWordTreeC_printReplacements;
static L translateUsingWordTreeC(L tok, Map tree) {
for (int i = 0; i < l(tok); )
i = translateUsingWordTreeC_scanFrom(tok, i, tree);
ret tok;
}
// returns index of first unreplaced token
// every replacement ends up as a single token plus some ""
static int translateUsingWordTreeC_scanFrom(L tok, int i, Map tree) {
int j = i;
S best = null; // best replacement found
int bestIndex = 0; // till where to replace
while true {
if (j > i) { // no default in root!
S def = cast tree.get("");
if (def != null) {
best = def; bestIndex = j;
//print("best solution: " + sfu(bestSolution));
}
}
if (j >= l(tok)) break;
O t = tree.get(tok.get(j));
if (translateUsingWordTreeC_debug)
print(i + "-" + j + " / " + joinWithSpace(subList(tok, i, j+1)) + " => " + sfu(t));
if (t == null) break;
if (t instanceof S) {
int k = j+1;
if (translateUsingWordTreeC_printReplacements)
print("translateUsingWordTreeC: replacing " + sfu(subList(tok, i, k-1) + " with " + quote(t));
replaceTokens(tok, i, k, (S) t);
ret k;
}
tree = (Map) t;
j++;
}
if (best != null) {
int k = bestIndex;
if (translateUsingWordTreeC_printReplacements)
print("translateUsingWordTreeC: replacing " + sfu(subList(tok, i, k) + " with " + quote(best));
replaceTokens(tok, i, k, best);
ret k;
}
ret i+1;
}