1#[macro_use]
9pub mod concrete;
10
11pub mod desugared;
13
14pub mod untyped;
16
17pub mod telescope;
19
20pub mod symbol;
24
25use std::fmt::{Formatter, Display, Error};
26
27use symbol::Ident;
28
29#[derive(Clone, Debug, Default)]
32pub struct Attributes {
33 pub inlined: bool,
34 pub kdl_run: bool,
35 pub kdl_erase: bool,
36 pub kdl_name: Option<Ident>,
37 pub kdl_state: Option<Ident>,
38 pub trace: Option<bool>, pub keep: bool,
40 pub partial: bool,
41 pub axiom: bool,
42}
43
44#[derive(Copy, Clone, Debug, Hash, PartialEq, Eq)]
46pub enum Operator {
47 Add,
48 Sub,
49 Mul,
50 Div,
51 Mod,
52 And,
53 Or,
54 Xor,
55 Shl,
56 Shr,
57 Ltn,
58 Lte,
59 Eql,
60 Gte,
61 Gtn,
62 Neq,
63}
64
65impl Display for Operator {
66 fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error> {
67 use Operator::*;
68
69 match self {
70 Add => write!(f, "+"),
71 Sub => write!(f, "-"),
72 Mul => write!(f, "*"),
73 Div => write!(f, "/"),
74 Mod => write!(f, "%"),
75 And => write!(f, "&"),
76 Or => write!(f, "|"),
77 Xor => write!(f, "^"),
78 Shl => write!(f, "<<"),
79 Shr => write!(f, ">>"),
80 Ltn => write!(f, "<"),
81 Lte => write!(f, "<="),
82 Eql => write!(f, "=="),
83 Gte => write!(f, ">="),
84 Gtn => write!(f, ">"),
85 Neq => write!(f, "!="),
86 }
87 }
88}