use crate::*;
macro_rules! makeeq {
($x:ident) => {
impl PartialEq for $x {
fn eq(&self, other: &$x) -> bool {
true
}
}
impl Eq for $x {}
impl PartialOrd for $x {
fn partial_cmp(&self, other: &$x) -> Option<Ordering> {
Some(Ordering::Equal)
}
}
impl Ord for $x {
fn cmp(&self, other: &$x) -> Ordering {
Ordering::Equal
}
}
};
}
makeeq!(CG);
#[derive(Debug, Clone, Copy)]
pub struct CG(pub usize);
pub type Pre = Box<Re>;
#[derive(Debug, PartialEq, Eq, Clone)]
pub enum Re {
Set(Bset),
Not(Pre),
Kle(Pre),
Pls(Pre),
Cap(Pre, CG),
Cat(Pre, Pre),
Alt(Pre, Pre),
}