#[macro_use]
pub mod concrete;
pub mod desugared;
pub mod untyped;
pub mod telescope;
pub mod symbol;
use std::fmt::{Formatter, Display, Error};
use symbol::Ident;
#[derive(Clone, Debug, Default)]
pub struct Attributes {
pub inlined: bool,
pub kdl_run: bool,
pub kdl_erase: bool,
pub kdl_name: Option<Ident>,
pub kdl_state: Option<Ident>,
pub trace: Option<bool>, pub keep: bool,
pub partial: bool,
pub axiom: bool,
}
#[derive(Copy, Clone, Debug, Hash, PartialEq, Eq)]
pub enum Operator {
Add,
Sub,
Mul,
Div,
Mod,
And,
Or,
Xor,
Shl,
Shr,
Ltn,
Lte,
Eql,
Gte,
Gtn,
Neq,
}
impl Display for Operator {
fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error> {
use Operator::*;
match self {
Add => write!(f, "+"),
Sub => write!(f, "-"),
Mul => write!(f, "*"),
Div => write!(f, "/"),
Mod => write!(f, "%"),
And => write!(f, "&"),
Or => write!(f, "|"),
Xor => write!(f, "^"),
Shl => write!(f, "<<"),
Shr => write!(f, ">>"),
Ltn => write!(f, "<"),
Lte => write!(f, "<="),
Eql => write!(f, "=="),
Gte => write!(f, ">="),
Gtn => write!(f, ">"),
Neq => write!(f, "!="),
}
}
}