예제 #1
0
 function expr(&$bc)
 {
     if (is_array($bc)) {
         switch ($bc[0]) {
             case JS_ASSIGN:
                 return jsi::assign($bc);
                 break;
             case JS_MATH:
                 return jsi::math($bc);
                 break;
             case JS_CMP:
                 return jsi::cmp($bc);
                 break;
             case JS_VALUE:
                 $bc = $bc[1];
                 return jsi::expr($bc);
                 break;
             case JS_VAR:
                 return jsi::get_var($bc);
                 break;
             case JS_FCALL:
                 return jsi::fcall($bc);
                 break;
             default:
                 jsi::err("expression fault <<" . substr(serialize($bc), 0, 128) . ">>");
         }
     } else {
         return $bc;
         // must be direct value
     }
 }
예제 #2
0
파일: js.php 프로젝트: slajax/Mojo-Tasks
function jse_run($flags = JSE_ACCEL)
{
    // interrupt every 1000 low-level statements
    if ($flags & JSE_TICKS) {
        register_tick_function(array("jsrt", "tick_safe"));
        declare (ticks=1000);
    }
    #-- check for accelerator/assembler presence
    if ($flags & JSE_ACCEL && class_exists("jsa") && class_exists("jsrt")) {
        eval(jsa::assemble(NULL, $flags & JSE_TICKS));
    } else {
        jsi::run();
    }
    #-- clean up
    if ($flags & JSE_TICKS) {
        unregister_tick_function(array("jsrt", "tick_safe"));
        declare (ticks=0);
    }
}