parent $root_evaluator object $prep_evaluator var $root dbref 'prep_evaluator var $root child_index 3 var $root fertile 1 var $root manager $prep_evaluator var $root owned [$prep_evaluator] var $root owners [$] var $root writable [] var $root readable ['parameters, 'methods, 'code] var $root inited 1 var $prep_evaluator append_str "_stmt" method set_stmt arg vars, args; var name; if ((vars['time]) != 'pre) return dict_add(vars, 'result, args); vars = ._eval_cml(vars, args[1]); name = vars['result]; if ((name[1]) != 'string) return dict_add(vars, 'result, ['string, "variable name must be a string"]); vars = dict_add(vars, name[2], args[2]); return dict_add(vars, 'result, 'succes); . method name_stmt arg vars, args; var names, n, output, f, name, delayed; output = []; delayed = 0; //.debug(names); //.debug("name2",names); if ((vars['time]) == 'post) { f = vars['sender]; if ((args[1]) != 'list) args = [args]; for n in (args) { vars = $base_evaluator._eval_ctext(vars, n); n = n[2]; if (f == n) { output = [@output, ['string_type, "you"]]; } else { catch ~methodnf { output = [@output, ['string, n.name()]]; } with handler { output = [@output, ['string, tostr(n)]]; } } } } else { vars = $base_evaluator._eval_ctext(vars, args[1]); names = vars['result]; if ((names[1]) != 'list) names = [names]; for name in (names) { // .debug(name); n = name[2]; if ((n.has_ancestor($user)) && (f != "generic")) { output = [@output, ['name_stmt, name]]; delayed = 1; } else { catch ~methodnf { output = [@output, ['string, n.name()]]; } with handler { output = [@output, ['string, tostr(n)]]; } } } if (delayed) vars = dict_add(vars, 'delayed, 1); } return dict_add(vars, 'result, @output); . method test_if var vars, line; vars = #[['times, ['vddl]]]; line = [[$base_evaluator, 'if_stmt, [[$base_evaluator, 'eq_stmt, ["1", "1"]], "baz"]]]; return $base_evaluator.eval_cml(vars, line); . method init_base_evaluator append_str = "_stmt"; . method if_stmt arg vars, args; var output, index, length, statements; if (!('pre in (vars['times]))) return dict_add(vars, 'result, args); index = 1; output = []; while (listlen(args) >= (index + 1)) { vars = $base_evaluator._truth(vars, [args[index]]); if ((vars['result])[1]) { statements = args[index + 1]; if (type(statements) in ['string, 'symbol]) { output = [statements]; } else if (type(statements[1]) == 'string) { index = 1; while (index <= listlen(statements)) { vars = $base_evaluator._eval_cml(vars, [statements[index]]); output = output + (vars['result]); index = index + 1; } } return dict_add(vars, 'result, output); } else { index = index + 2; } } if (listlen(args) == index) return $base_evaluator._eval_cml(vars, args[index]); return dict_add(vars, 'result, output); . method get_stmt arg vars, args; var name; if ((vars['time]) != 'pre) return dict_add(vars, 'result, args); vars = $base_evaluator._eval_ctext(vars, args[1]); name = vars['result]; if ((name[1]) != 'string_type) return dict_add(vars, 'result, ['string, "Variable names must be strings."]); if (!((name[2]) in dict_keys(vars))) return dict_add(vars, 'result, ['string, "NO SUCH VARIABLE " + (name[2])]); return dict_add(vars, 'result, vars[name[2]]); . method eq_stmt arg vars, args; var left, right; vars = $base_evaluator._eval_cml(vars, [args[1]]); left = (vars['result])[1]; vars = $base_evaluator._eval_cml(vars, [args[2]]); right = (vars['result])[1]; if (left == right) return dict_add(vars, 'result, ['true]); else return dict_add(vars, 'result, ['false]); .