[][src]Macro biodivine_lib_bdd::bdd

macro_rules! bdd {
    ( ( $($e:tt)* ) ) => { ... };
    ( $bdd:ident ) => { ... };
    (!$e:tt) => { ... };
    ($l:tt & $r:tt) => { ... };
    ($l:tt | $r:tt) => { ... };
    ($l:tt <=> $r:tt) => { ... };
    ($l:tt => $r:tt) => { ... };
    ($l:tt ^ $r:tt) => { ... };
}

A macro for simplifying Bdd operations. It evaluates given expression over Bdds 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.