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; }