function block(&$bc, $use_braces = true) { static $bn = 0; $bn++; $o = ""; #-- multiple lines in every block for ($pc = 0; $pc <= count($bc); $pc++) { if (is_array($bc[$pc])) { // else it is a plain value in void context switch ($bc[$pc][0]) { case JS_FCALL: case JS_ASSIGN: case JS_MATH: case JS_CMP: case JS_VALUE: case JS_VAR: $o .= jsa::expr($bc[$pc]) . ";\n"; break; case JS_VAR_STATEMENT: $o .= jsa::constr_var($bc[$pc]); break; case JS_FOR: $o .= jsa::constr_for($bc[$pc]); break; case JS_COND: $o .= jsa::constr_cond($bc[$pc]); break; case JS_SWITCH: $o .= jsa::constr_switch($bc[$pc]); break; case JS_RT: $o .= jsa::constr_rt($bc[$pc]); break; case JS_BREAK: $o .= jsa::constr_break($bc[$pc]); break; case JS_RETURN: $o .= jsa::constr_return($bc[$pc]); break; case JS_FUNCDEF: $o .= jsa::constr_funcdef($bc[$pc]); break; default: if (is_array($bc[$pc])) { $o .= jsa::block($bc[$pc]); } else { jsa::err("unknown processing code @{$pc}"); } } } } if ($use_braces) { $o = "{\n" . $o . "}\n"; } return $o; }