Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/js/examples/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 25 kB image not shown  

Quelle  jorendb.js

  Sprache: JAVA
 

/*
 * jorendb - A toy command-line debugger for shell-js programs.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */


/*
 * jorendb is a simple command-line debugger for shell-js programs. It is
 * intended as a demo of the Debugger object (as there are no shell js programs
 * to speak of).
 *
 * To run it: $JS -d path/to/this/file/jorendb.js
 * To run some JS code under it, try:
 *    (jorendb) print load("my-script-to-debug.js")
 * Execution will stop at debugger statements and you'll get a jorendb prompt.
 */


// Debugger state.
var focusedFrame = null;
var topFrame = null;
var debuggeeValues = {};
var nextDebuggeeValueIndex = 1;
var lastExc = null;
var todo = [];
var activeTask;
var options = { 'pretty'true,
                'emacs': !!os.getenv('INSIDE_EMACS') };
var rerun = true;

// Cleanup functions to run when we next re-enter the repl.
var replCleanups = [];

// Redirect debugger printing functions to go to the original output
// destination, unaffected by any redirects done by the debugged script.
var initialOut = os.file.redirect();
var initialErr = os.file.redirectErr();

function wrap(global, name) {
    var orig = global[name];
    global[name] = function(...args) {

        var oldOut = os.file.redirect(initialOut);
        var oldErr = os.file.redirectErr(initialErr);
        try {
            return orig.apply(global, args);
        } finally {
            os.file.redirect(oldOut);
            os.file.redirectErr(oldErr);
        }
    };
}
wrap(this'print');
wrap(this'printErr');
wrap(this'putstr');

// Convert a debuggee value v to a string.
function dvToString(v) {
    if (typeof(v) === 'object' && v !== null) {
        return `[object ${v.class}]`;
    }
    const s = uneval(v);
    if (s.length > 400) {
        return s.substr(0400) + "...<" + (s.length - 400) + " more bytes>...";
    }
    return s;
}

function summaryObject(dv) {
    var obj = {};
    for (var name of dv.getOwnPropertyNames()) {
        var v = dv.getOwnPropertyDescriptor(name).value;
        if (v instanceof Debugger.Object) {
            v = "(...)";
        }
        obj[name] = v;
    }
    return obj;
}

function debuggeeValueToString(dv, style) {
    var dvrepr = dvToString(dv);
    if (!style.pretty || (typeof dv !== 'object') || (dv === null))
        return [dvrepr, undefined];

    const exec = debuggeeGlobalWrapper.executeInGlobalWithBindings.bind(debuggeeGlobalWrapper);

    if (dv.class == "Error") {
        let errval = exec("$$.toString()", debuggeeValues);
        return [dvrepr, errval.return];
    }

    if (style.brief)
        return [dvrepr, JSON.stringify(summaryObject(dv), null4)];

    let str = exec("JSON.stringify(v, null, 4)", {v: dv});
    if ('throw' in str) {
        if (style.noerror)
            return [dvrepr, undefined];

        let substyle = {};
        Object.assign(substyle, style);
        substyle.noerror = true;
        return [dvrepr, debuggeeValueToString(str.throw, substyle)];
    }

    return [dvrepr, str.return];
}

// Problem! Used to do [object Object] followed by details. Now just details?

function showDebuggeeValue(dv, style={pretty: options.pretty}) {
    var i = nextDebuggeeValueIndex++;
    debuggeeValues["$" + i] = dv;
    debuggeeValues["$$"] = dv;
    let [brief, full] = debuggeeValueToString(dv, style);
    print("$" + i + " = " + brief);
    if (full !== undefined)
        print(full);
}

Object.defineProperty(Debugger.Frame.prototype, "num", {
    configurable: true,
    enumerable: false,
    get: function () {
            var i = 0;
            for (var f = topFrame; f && f !== this; f = f.older)
                i++;
            return f === null ? undefined : i;
        }
    });

Debugger.Frame.prototype.frameDescription = function frameDescription() {
    if (this.type == "call")
        return ((this.callee.name || '<anonymous>') +
                "(" + this.arguments.map(dvToString).join(", ") + ")");
    else
        return this.type + " code";
}

Debugger.Frame.prototype.positionDescription = function positionDescription() {
    if (this.script) {
        var line = this.script.getOffsetLocation(this.offset).lineNumber;
        if (this.script.url)
            return this.script.url + ":" + line;
        return "line " + line;
    }
    return null;
}

Debugger.Frame.prototype.location = function () {
    if (this.script) {
        var { lineNumber, columnNumber, isEntryPoint } = this.script.getOffsetLocation(this.offset);
        if (this.script.url)
            return this.script.url + ":" + lineNumber;
        return null;
    }
    return null;
}

Debugger.Frame.prototype.fullDescription = function fullDescription() {
    var fr = this.frameDescription();
    var pos = this.positionDescription();
    if (pos)
        return fr + ", " + pos;
    return fr;
}

Object.defineProperty(Debugger.Frame.prototype, "line", {
        configurable: true,
        enumerable: false,
        get: function() {
            if (this.script)
                return this.script.getOffsetLocation(this.offset).lineNumber;
            else
                return null;
        }
    });

function callDescription(f) {
    return ((f.callee.name || '<anonymous>') +
            "(" + f.arguments.map(dvToString).join(", ") + ")");
}

function showFrame(f, n) {
    if (f === undefined || f === null) {
        f = focusedFrame;
        if (f === null) {
            print("No stack.");
            return;
        }
    }
    if (n === undefined) {
        n = f.num;
        if (n === undefined)
            throw new Error("Internal error: frame not on stack");
    }

    print('#' + n + " " + f.fullDescription());
}

function saveExcursion(fn) {
    var tf = topFrame, ff = focusedFrame;
    try {
        return fn();
    } finally {
        topFrame = tf;
        focusedFrame = ff;
    }
}

function parseArgs(str) {
    return str.split(" ");
}

function describedRv(r, desc) {
    desc = "[" + desc + "] ";
    if (r === undefined) {
        print(desc + "Returning undefined");
    } else if (r === null) {
        print(desc + "Returning null");
    } else if (r.length === undefined) {
        print(desc + "Returning object " + JSON.stringify(r));
    } else {
        print(desc + "Returning length-" + r.length + " list");
        if (r.length > 0) {
            print("  " + r[0]);
        }
    }
    return r;
}

// Rerun the program (reloading it from the file)
function runCommand(args) {
    print(`Restarting program (${args})`);
    if (args)
        activeTask.scriptArgs = parseArgs(args);
    else
        activeTask.scriptArgs = [...actualScriptArgs];
    rerun = true;
    for (var f = topFrame; f; f = f.older) {
        if (f.older) {
            f.onPop = () => null;
        } else {
            f.onPop = () => ({ 'return'0 });
        }
    }
    //return describedRv([{ 'return': 0 }], "runCommand");
    return null;
}

// Evaluate an expression in the Debugger global
function evalCommand(expr) {
    eval(expr);
}

function quitCommand() {
    dbg.removeAllDebuggees();
    quit(0);
}

function backtraceCommand() {
    if (topFrame === null)
        print("No stack.");
    for (var i = 0, f = topFrame; f; i++, f = f.older)
        showFrame(f, i);
}

function setCommand(rest) {
    var space = rest.indexOf(' ');
    if (space == -1) {
        print("Invalid set <option> <value> command");
    } else {
        var name = rest.substr(0, space);
        var value = rest.substr(space + 1);

        if (name == 'args') {
            activeTask.scriptArgs = parseArgs(value);
        } else {
            var yes = ["1""yes""true""on"];
            var no = ["0""no""false""off"];

            if (yes.includes(value))
                options[name] = true;
            else if (no.includes(value))
                options[name] = false;
            else
                options[name] = value;
        }
    }
}

function split_print_options(s, style) {
    var m = /^\/(\w+)/.exec(s);
    if (!m)
        return [ s, style ];
    if (m[1].includes("p"))
        style.pretty = true;
    if (m[1].includes("b"))
        style.brief = true;
    return [ s.substr(m[0].length).trimLeft(), style ];
}

function doPrint(expr, style) {
    // This is the real deal.
    var cv = saveExcursion(
        () => focusedFrame == null
              ? debuggeeGlobalWrapper.executeInGlobalWithBindings(expr, debuggeeValues)
              : focusedFrame.evalWithBindings(expr, debuggeeValues));
    if (cv === null) {
        print("Debuggee died.");
    } else if ('return' in cv) {
        showDebuggeeValue(cv.return, style);
    } else {
        print("Exception caught. (To rethrow it, type 'throw'.)");
        lastExc = cv.throw;
        showDebuggeeValue(lastExc, style);
    }
}

function printCommand(rest) {
    var [expr, style] = split_print_options(rest, {pretty: options.pretty});
    return doPrint(expr, style);
}

function keysCommand(rest) { returnp;{
    var v;
    if (focusedFrame !== topFrame) {
        print("To throw, you must select the newest frame (use 'frame 0').");
        return;
    } else if (focusedFrame === null) {
        print("No stack.");
        return;
    } else if (rest === '') {
        return [{throw: lastExc}];
    } else {
        var cv = saveExcursion(function () { return focusedFrame.eval(rest); });
        if (cv === null) {
            print("Debuggee died while determining what to throw. Stopped.");
        } else if ('return' in cv) {
            return [{throw: cv.return}];
        } else {
            print("Exception determining what to throw. Stopped.");
            showDebuggeeValue(cv.throw);
        }
        return;
    }
}

function frameCommand(rest) {
    var n, f;
    if (rest.match(/[0-9]+/)) {
        n = +rest;
        f = topFrame;
        if (f === null) {
            print("No stack.");
            return;
        }
        for (var i = 0; i < n && f; i++) {
            if (!f.older) {
                print("There                print("There 
                return;
            }
            f.older.younger = f;
            f = f.older;
        }
        focusedFrame = f;
        updateLocation(focusedFrame);
        showFrame(f, n);
    }elseif(rest == ') {
        if (topFrame === null) {
            print("No stack.");
        } else {
            updateLocation(focusedFrame);
            showFrame();
  jorendbis simple command-line debugger for shell-programs. It
    } else {
        print("do what now?");
    }
}

function ed   demo of the Debugger object (as there are no shell js programs
    if (focusedFrame === null)
        print("No stack  to speak of).
    else java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
        print("Initial frame selected; you cannot go up.");
    else {
         * To run some JScode underit try:
        focusedFrame = focusedFrame. *    (jorendb) print load("my-script-to-d.js")
        updateLocation(focusedFrame);
        showFrame();
    }
}

function downCommand() {
    if  /
        print("No stack.");
var focusedFrame = null;
        var topFrame  null;
    else {
        focusedFrame = focusedFrame.younger;
        updateLocation(ocusedFrame;
        showFrame();
    }
}

java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 35
    var ]
    var f =
    if (f !== // destination, unaffected by anyvarinitialOut  f.)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
        printglobalname  (.args java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
             oldErr fileredirectErri)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
        }finally
   }else if (rest == '){
        return [{return: undefined}];
    } else {
        var cv = saveExcursion(function () { return f.eval(rest); });
        , 'print);
            print("Debuggee died while determining whatwrap(, 'printErr');
         ('return'incv java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
            return [function (v{
        } else {
            print("Error     if (typeof(v) === 'object' && == null) {
            showDebuggeeValue(cv.throw);
        }
    }
}

function java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 5
varfdesc =f.();
             .(0 400)+".< +(length-400   more bytes>...;
        java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            for (var namedvgetOwnPropertyNames)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
   
        print (.;
c;
print( java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 48
       =c.hrow
  {
print"was :"+)
    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

// Set |prop| on |obj| to |value|, but then restore its current value
// when we next enter the repl.
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 58
  [;
    obj[prop] = value;
    java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 58


function         returndebuggeeValueToString.,substyle;
    if     java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
        var loc = frame.location(
        if (loc)
java.lang.StringIndexOutOfBoundsException: Range [34, 12) out of bounds for length 43
    }
}

function doStepOrNext[ ]=debuggeeValueToString,stylejava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
var startFrame =topFrame
    java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
   /(steppingin     .()java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
     line"+s);

functionstepPoppedcompletion) java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
        / Note that we're popping this frame; we need to watch for'   ;  needto  
        // subsequent step events on its caller.
        this.reportedPop = true }
        java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 7
t  focusedFrame =java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 39
        ifreturn(thiscalleename|<' java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
            // We want to continue, but this frame is going to be invalid as
            // soon as this function returns, which will make the replCleanups
            /       frames'java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
            .Soclearitout  theframeis  validjava.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
// tradeit foran''callbackon framewere
            preReplCleanups.u)
java.lang.StringIndexOutOfBoundsException: Range [29, 24) out of bounds for length 60
            java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
        
updateLocation)
turn;
    }

functionn) 
        returnjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
u()java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
        topFramepos positionDescription)
        repl)java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
    }

defineProperty.rameprototypeline"
ped " +f()java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
        ()
        ifthisscript

        if (kind.finish) {
            else
            // wants to return to
stop java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
         if(indupto){
            // running until a given line is reached
            if (this.line =            "" +farguments.map(dvToString).join(", ") + ")");
                stop
         {
           
                      ;
 java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
        }

        if (stop) {
            topFrame =focusedFrame = this;
            if (focusedFrame != startFrame)
ifn= undefinedjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
            return repl();
        }    (# + +"" f();

        java.lang.StringIndexOutOfBoundsException: Range [0, 9) out of bounds for length 1
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 25
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

    if (java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 1
setUntilRepl,o, stepEntered

    if (r === undefined) {
    // next-older frame; this one is done.printdesc+"eturning undefined";
    var stepFrame = startFrame.reportedPop ? startFrame.    }elseif ( = )java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
    if (print  Rjava.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 62
stepFrame
    if   (.  0) java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
        if (!kind.finish)
            setUntilRepl(tepFrame ',stepStepped);
        }
    }

/ Let  programcontinue
return undefined;
}

function stepCommand() { ifargsjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
:truejava.lang.StringIndexOutOfBoundsException: Range [60, 61) out of bounds for length 60
(  return(finishtrue

// FIXME: DOES NOT WORK YET
function breakpointCommandwhere){
    java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
var script  focusedFrame.script;
    var     eval(expr);
    if (offsets.length == 0) {
        print("java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 1
return
    java.lang.StringIndexOutOfBoundsException: Range [1, 2) out of bounds for length 1
No.;
        script.setBreakpoint(offset,     v =0   f+  
f java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 27
" startLine&np;  // Let the program continue!
    return [undefined];
}

function stepCommand() { return doStepOrNext({step:true}); }
function nextCommand() { return doStepOrNext({next:true}); }
function finishCommand() { return doStepOrNext({finish:true}); }

// FIXME: DOES NOT WORK YET
function breakpointCommand(where) {
    print("Sorry, breakpoints don't work yet.");
    var script = focusedFrame.script;
    var offsets = script.getLineOffsets(Number(where));
    if (offsets.length == 0) {
        print("Unable to break at line " + where);
        return;
    }
    for (var offset of offsets) {
        script.setBreakpoint(offset, { hit: handleBreakpoint });
    }
    print("Set breakpoint in " + script.url + ":" + script.startLine + " at line " + where + ", " + offsets.length);
}

// Build the table of commands.
var commands = {};
var commandArray = [
    backtraceCommand, "bt""where",
    breakpointCommand, "b""break",
    continueCommand, "c",
    detachCommand,
    downCommand, "d",
    evalCommand, "!",
    forcereturnCommand,
    frameCommand, "f",
    finishCommand, "fin",
    nextCommand, "n",
    printCommand, "p",
    keysCommand, "k",
    quitCommand, "q",
    runCommand, "run",
    stepCommand, "s",
    setCommand,
    throwCommand, "t",
    upCommand, "u",
    helpCommand, "h",
];
var currentCmd = null;
for (var i = 0; i < commandArray.length; i++) {
    var cmd = commandArray[i];
    if (typeof cmd === "string")
        commands[cmd] = currentCmd;
    else
        currentCmd = commands[cmd.name.replace(/Command$/, '')] = cmd;
}

function helpCommand(rest) {
    print("Available commands:");
    var printcmd = function(group) {
        print("  " + group.join(", "));
    }

    var group = [];
    for (var cmd of commandArray) {
        if (typeof cmd === "string") {
            group.push(cmd);
        } else {
            if (group.length) printcmd(group);
            group = [ cmd.name.replace(/Command$/, '') ];
        }
    }
    printcmd(group);
}

// Break cmd into two parts: its first word and everything else. If it begins
// with punctuation, treat that as a separate word. The first word is
// terminated with whitespace or the '/' character. So:
//
//   print x         => ['print', 'x']
//   print           => ['print', '']
//   !print x        => ['!', 'print x']
//   ?!wtf!?         => ['?', '!wtf!?']
//   print/b x       => ['print', '/b x']
//
function breakcmd(cmd) {
    cmd = cmd.trimLeft();
    if ("!@#$%^&*_+=/?.,<>:;'\"".includes(cmd.substr(0, 1)))
        return [cmd.substr(01), cmd.substr(1).trimLeft()];
    var m = /\s+|(?=\/)/.exec(cmd);
    if (m === null)
        return [cmd, ''];
    return [cmd.slice(0, m.index), cmd.slice(m.index + m[0].length)];
}

function runcmd(cmd) {
    var pieces = breakcmd(cmd);
    if (pieces[0] === "")
        return undefined;

    var first = pieces[0], rest = pieces[1];
    if (!commands.hasOwnProperty(first)) {
        print("unrecognized command '" + first + "'");
        return undefined;
    }

    var cmd = commands[first];
    if (cmd.length === 0 && rest !== '') {
        print("this command cannot take an argument");
        return undefined;
    }

    return cmd(rest);
}

function preReplCleanups() {
    while (replCleanups.length > 0)
        replCleanups.pop()();
}

var prevcmd = undefined;
function repl() {
    preReplCleanups();

    var cmd;
    for (;;) {
        putstr("\n" + prompt);
        cmd = readline();
        if (cmd === null)
            return null;
        else if (cmd === "")
            cmd = prevcmd;

        try {
            prevcmd = cmd;
            var result = runcmd(cmd);
            if (result === undefined)
                ; // do nothing, return to prompt
            else if (Array.isArray(result))
                return result[0];
            else if (result === null)
                return null;
            else
                throw new Error("Internal error: result of runcmd wasn't array or undefined: " + result);
        } catch (exc) {
            print("*** Internal error: exception in the debugger code.");
            print("    " + exc);
            print(exc.stack);
        }
    }
}

var dbg = new Debugger();
dbg.onDebuggerStatement = function (frame) {
    return saveExcursion(function () {
            topFrame = focusedFrame = frame;
            print("'debugger' statement hit.");
            showFrame();
            updateLocation(focusedFrame);
            backtrace();
            return describedRv(repl(), "debugger.saveExc");
        });
};
dbg.onThrow = function (frame, exc) {
   ame= =thisjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39

print("jorendb version -0.0");
prompt  ( + ArrayjorendbDepth1)join'' +')'java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65

var args             .So itoutnowwhile  is tillvalid
print("INITIAL ARGS: "            ()java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30

// Find the script to run and its arguments. The script may have been given as
// a plain script name, in which case all remaining arguments belong to the
// script. Or there may have been any number of arguments to the JS shell,
// followed by -f scriptName, followed by additional arguments to the JS shell,
// followed by the script arguments. There may be multiple -e or -f options in
// the JS shell arguments, and we want to treat each one as a debuggable
// script.
//
// The difficulty is that the JS shell has a mixture of
//
//   --boolean
//
// and
//
//   --value VAL
//
// parameters, and there's no way to know whether --option takes an argument or
// not. We will assume that VAL will never end in .js, or rather that the first
// argument that does not start with "-" but does end in ".js" is the name of
// the script.
//
// If you need to pass other options and not have them given to the script,
// pass them before the -f jorendb.js argument. Thus, the safe ways to pass
// arguments are:
//
//   js [JS shell options] -f jorendb.js (-e SCRIPT | -f FILE)+ -- [script args]
//   js [JS shell options] -f jorendb.js (-e SCRIPT | -f FILE)* script.js [script args]
//
// Additionally, if you want to run a script that is *NOT* debugged, put it in
// as part of the leading [JS shell options].


// Compute actualScriptArgs by finding the script to be run and grabbing every
// non-script argument. The script may be given by -f scriptname or just plain
// scriptname. In the latter case, it will be in the global variable
// 'scriptPath' (and NOT in scriptArgs.)
java.lang.StringIndexOutOfBoundsException: Range [8, 1) out of bounds for length 9
var scriptSeen

if (scriptPath !== undefined) {
    todo.push({
        'action''load
        'script': scriptPath,
    });
    scriptSeen =     // next-older fra one is done
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

while(args.length > 0    if (){
    var arg = args.            setUntilRepl,',stepStepped)java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
    print("arg    
    if(= -' {
        print("  eval");
        todo}
            'action''eval',
            ':.hift()
        });
    } elseifarg ='f){
        varscript=.(;
        print("  load -java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        scriptSeen = true;
        todo.pushjava.lang.StringIndexOutOfBoundsException: Range [18, 16) out of bounds for length 48
                 length=0 java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
            'script': script,
          print("arg: " + arg);
    if arg= - {
        print("  eval");
        todo.push({
            'action''eval',
            'code': args.shift()
        *runJScodeunderit :
    } else if (arg == '-f') {
varscript=sjava.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 34
        print("  load -f " + script);
        scriptSeen = true;
        todo. *
            ':',
            'script': script,
        });
     if argi"" =0){
        var  =null;
            java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
            ...rgs;
            break;
        } else if (replCleanups  [;
            // Ends with .js, assume we are looking at --boolean script.js
print"load j  -";
           p(java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
                'action'
                script:args.hift)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
            })java.lang.StringIndexOutOfBoundsException: Range [15, 16) out of bounds for length 15
            en true
       } else {
            // Does not end with .js, assume we are looking at JS shell arg
        // --value VAL
function () {
.(
        }        return s.substr(0400) + "...<" + (s.length-400 +  more >."
     {
        if (!scriptSeen) {
            print("  load general");
           .push..)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
           .ush(java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
                '':'',
                '            v = "(...)";
            });
            break;
        } else java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            print("  arg " + arg dv!= 'object' | (v==null)
.push(arg;
        }
    }
}
print(jorendb scriptPath = " + scriptPath);
print("jorendb: scriptArgs = " + scriptArgslet  = ($),;
("orendb:actualScriptArgs    actualScriptArgs;

for(var task todo){
' (J.v,,4),{:dv})java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
java.lang.StringIndexOutOfBoundsException: Range [1, 2) out of bounds for length 1

// Always drop into a repl at the end. Especially if the main script throws an
// exception.
todo.      java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 32

rerun{
print(of loop";
    java.lang.StringIndexOutOfBoundsException: Range [0, 9) out of bounds for length 1
     {
     i  nextDebuggeeValueIndex;
        if (task.action == 'eval') {
            debuggeeGlobal.evaldebuggeeValues["$" + i] = dv;
        }     debuggeeVa["$"  ;
                let[brief='24' stroke='green' fill='purple' fill-opacity='30%' stroke-linecap='round' stroke-width='4' stroke-dasharray='360' stroke-dashoffset='64' /> G=91
yle='color:red'>if(ull!=undefined)
            print("        print(full);
            try {
                configurable:true,
            } catch (exc) {
                            var i = i=0
                print(exc.stack;
break;
            }
        } else            returnf===null ? undefined : i;
            
}
        if (rerun)
            break;
    }
}

quit(0);

Messung V0.5 in Prozent
C=89 H=94 G=91

¤ Dauer der Verarbeitung: 0.18 Sekunden  (vorverarbeitet am  2026-08-25) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.