Warning: session_start(): open(/var/lib/php/sessions/sess_8suu8ph0g2nkvhkklgo1ufkj31, 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
sclass ConvertLASToJava {
replace Tk with GazelleV_LeftArrowScript.
delegate Evaluable to Tk.
O get(LASClassDef.FieldDef field) {
ret field.type() + " " + field.name() + ";";
}
O get(Tk.FunctionDef f) {
ret "O " + f.name + "(" + joinWithComma(map(f.args, arg -> "O " + arg)) + ") {\n"
+ indentx(get(f.body))
+ "}\n";
}
O getInstruction(Evaluable o) {
O inner = get(o);
ret inner + ";";
}
O get(Evaluable o) {
if (o == null) null;
// These are the properly implemented cases
if (o cast Tk.GetVar)
ret o.var;
if (o cast Tk.Script)
ret lines(map getInstruction(o.steps));
if (o cast Tk.ClassDef) {
LASClassDef c = o.lasClass.classDef;
ret "class " + c.userGivenName + " " + curly("\n" + indentx(
joinNemptiesWithEmptyLines(
lines_rtrim(map get(c.fields)),
lines_rtrim(map get(c.methods)))
)) + "\n}";
}
if (o cast Tk.Assignment)
ret o.var + " = " + get(o.expression);
if (o cast Tk.CallMethod) {
O target = o.target;
S targetStr = null;
if (target cast Class)
if (eqOneOf(shortClassName(target), "main", "utils"))
targetStr = "";
else
targetStr = str(get(o.target));
ret (empty(targetStr) ? "" : targetStr + ".")
+ FunctionCall(o.methodName, map get(o.args));
}
if (o cast Tk.SetField)
ret get(o.target) + "." + o.name + " = " + get(o.expr);
if (o cast Tk.CallMethodOrGetField)
ret get(o.target) + "." + o.name;
if (o cast Tk.NewObject)
ret "new " + FunctionCall(shortClassName(o.c), map get(o.args));
if (o cast Tk.IfThen)
ret "if (" + get(o.condition) + ")\n"
+ indentx(get(o.body))
+ (o.elseBranch == null ? "" : "\nelse\n"
+ indentx(get(o.elseBranch));
if (o cast Tk.Const) {
var c = o;
try object c?.srcText();
pcall {
ret toJava(o.value);
}
}
if (o cast Tk.ForEach)
ret "fOr (" + o.var + " : " + get(o.collection) + ") {\n"
+ indentx(get(o.body)) + "\n}";
// end of explicitly handled cases
warn("Can't convert to Java: " + className(o));
// Retain original script text as a default
if (o cast Tk.Base) {
var b = o;
try object b?.srcText();
}
// If that fails (it shouldn't), just return the toString
warn("No source reference in script object: " + className(o));
ret str(o);
}
}