package jazz.circuit.expr;
//////////////////////////////////////////////////////////////////////////////
//
// Abstract Syntax Tree of Boolean Expressions
//
// Author: Francois.Bourdoncle@ensmp.fr
//
//////////////////////////////////////////////////////////////////////////////
public abstract class _BoolExpr {
setEq(e: _BoolExpr): _BoolExpr;
setOr(e: _BoolExpr): _BoolExpr;
setAnd(e: _BoolExpr): _BoolExpr;
setXor(e: _BoolExpr): _BoolExpr;
getDefinition(): _BoolExpr;
getValue<T: BooleanAlgebra>(vars: T[],
reg: fun(T): T,
constant: fun(per): T): T;
static dynamic priority: int = 0;
}
class _AndExpr extends _BoolExpr {
e1: _BoolExpr;
e2: _BoolExpr;
}
class _OrExpr extends _BoolExpr {
e1: _BoolExpr;
e2: _BoolExpr;
}
class _XorExpr extends _BoolExpr {
e1: _BoolExpr;
e2: _BoolExpr;
}
class _MuxExpr extends _BoolExpr {
e0: _BoolExpr;
e1: _BoolExpr;
e2: _BoolExpr;
}
class _NotExpr extends _BoolExpr {
e: _BoolExpr;
}
class _RegExpr extends _BoolExpr {
e: _BoolExpr;
}
class _CstExpr extends _BoolExpr {
v: per;
}
class _VarExpr extends _BoolExpr {
id: int;
}