Macro biodivine_lib_bdd::bdd
source · [−]macro_rules! bdd {
($vars:ident, ($($e:tt)*)) => { ... };
( ( $($e:tt)* ) ) => { ... };
($vars:ident, $bdd:literal) => { ... };
($vars:ident, $bdd:ident) => { ... };
($bdd:ident) => { ... };
($vars:ident, !$e:tt) => { ... };
($vars:ident, $l:tt & $r:tt) => { ... };
($vars:ident, $l:tt | $r:tt) => { ... };
($vars:ident, $l:tt <=> $r:tt) => { ... };
($vars:ident, $l:tt => $r:tt) => { ... };
($vars:ident, $l:tt ^ $r:tt) => { ... };
(!$e:tt) => { ... };
($l:tt & $r:tt) => { ... };
($l:tt | $r:tt) => { ... };
($l:tt <=> $r:tt) => { ... };
($l:tt => $r:tt) => { ... };
($l:tt ^ $r:tt) => { ... };
}
Expand description
A macro for simplifying Bdd
operations. It evaluates given expression over Bdd
s where
you can use standard boolean operators !
, &
, |
, ^
, =>
and <=>
.
Sadly, except for the very top expression, every level needs to be enclosed
in parentheses since rust macros cannot parse complex expressions with
potential ambiguities. You can’t write x & y & z
, you have to use (x & y) & z
.
Also !x & z
is not permitted, you have to use (!x) & z
.
See tutorial for usage examples.