/
CDC-1.2b/
CDC-1.2b/src/
parent $root_evaluator
object $uncompile_evaluator

var $root dbref 'uncompile_evaluator
var $root child_index 0
var $root fertile 0
var $root manager $uncompile_evaluator
var $root owned [$uncompile_evaluator]
var $root owners [$]
var $root writable []
var $root readable ['parameters, 'methods, 'code]
var $root inited 1

method eval_ctext
    arg args;
    var output, line, a, result;
    
    output = [];
    catch ~methodnf {
        catch ~range {
            result = .(args[1])(args[2]);
        } with handler {
            result = [];
        }
        output = output.join(result);
    } with handler {
        line = "{" + tostr(args[1]);
        if ("_stmt" in line)
            line = substr(line, 1, ("_stmt" in line) - 1);
        output = output.join(line);
        for a in (args[2])
            output = (output.join(" ")).join(.eval_ctext(a));
        output = output.join("}");
    }
    return output;
.

method get_stmt
    arg args;
    
    return (["%"].join(((.eval_ctext(args[1]))[1]).strip("\""))).join([";"]);
.

method string_type
    arg args;
    
    return ("\"" + args) + "\"";
.

method text_stmt
    arg args;
    var output, t, result;
    
    output = ["\""];
    for t in (args) {
        if ((t[1]) == 'string_type)
            output = output.join(t[2]);
        else
            output = output.join(.eval_ctext(t));
    }
    output = output.join("\"");
    return output;
.

method force_stmt
    arg args;
    
    return ($list.join("(force ", .eval_ctext(args[1]))).join(")");
.

method list_type
    arg args;
    var t, output, result;
    
    output = ["["];
    for t in (args) {
        result = .eval_ctext(t);
        output = output.join(result);
    }
    return output.join("]");
.

method _line_stmt
    arg args;
    
    return ["", ""];
.

method dbref_type
    arg term;
    
    return [term.dbref()];
.

method br_stmt
    arg args;
    
    return ["{br}", ""];
.

method p_stmt
    arg args;
    
    return ["{p}", "", ""];
.

method ul_stmt
    arg args;
    var output, l;
    
    output = [""];
    for l in (args)
        output = output.join((.eval_ctext(l)).join(["", ""]));
    args = ["{ul"];
    for l in (output)
        args = [@args, "   " + l];
    return (args.chop()).join("}");
.

method dfn_stmt
    arg args;
    var output, a, result;
    
    output = [""];
    for a in (sublist(args, 2))
        output = output.join((.eval_ctext(a)).join(["", ""]));
    args = ["{dfn " + ((.eval_ctext(args[1]))[1])];
    for a in (output)
        args = [@args, "  " + a];
    return (args.chop()).join("}");
.

method integer_type
    arg args;
    
    return tostr(args);
.