new object $xor: $logic_frob;
var $logic_frob token = "^";
var $root created_on = 796268969;
var $root flags = ['methods, 'code, 'variables, 'core];
var $root inited = 1;
var $root managed = [$xor];
var $root manager = $xor;
var $root trusted = [];
public method .test() {
arg xorlist, @args;
var val, x;
val = 0;
for x in (xorlist) {
catch ~type, ~methodnf
val = val ? (!(x.test(@args))) : (x.test(@args));
with
val = val ? (!x) : x;
}
return val;
};
frob method .unparse() {
arg xorlist;
var str, x;
str = "";
for x in (xorlist) {
catch any
str = (str + (x.unparse())) + " ^^ ";
with
str = (str + tostr(x)) + " ^^ ";
}
return ("(" + (str && (str.subrange(1, (str.length()) - 4)))) + ")";
};