Warning: session_start(): open(/var/lib/php/sessions/sess_e5f3b2cirq831gdcvehkq1mu6c, 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 translateUsingWordTree_debug;
sbool translateUsingWordTree_printReplacements;
sS translateUsingWordTree(S input, Map tree) {
ret join(translateUsingWordTree(javaTok(input), tree));
}
static L translateUsingWordTree(L tok, Map tree) {
for (int i = 1; i < l(tok); )
i = translateUsingWordTree_scanFrom(tok, i, tree);
ret tok;
}
// returns index of first unreplaced token
// every replacement ends up as a single token plus some ""
static int translateUsingWordTree_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 (translateUsingWordTree_debug)
print(i + "-" + j + " / " + joinSubList(tok, i, j+1) + " => " + sfu(t));
if (t == null) break;
if (t instanceof S) {
int k = j+2;
if (translateUsingWordTree_printReplacements)
print("translateUsingWordTree: replacing " + sfu(subList(tok, i, k-1) + " with " + quote(t));
replaceTokens(tok, i, k-1, (S) t);
ret k;
}
tree = (Map) t;
j += 2;
}
if (best != null) {
int k = bestIndex;
replaceTokens(tok, i, k-1, best);
ret k;
}
ret i+2;
}
sS translateUsingWordTree(Map tree, S input) {
ret translateUsingWordTree(input, tree);
}