vector_expr/
expression.rs1#[derive(Clone, Debug)]
3pub enum Expression<Real> {
4 Boolean(BoolExpression<Real>),
5 Real(RealExpression<Real>),
6 String(StringExpression),
7}
8
9#[derive(Clone, Debug)]
11pub enum BoolExpression<Real> {
12 And(Box<BoolExpression<Real>>, Box<BoolExpression<Real>>),
14 Or(Box<BoolExpression<Real>>, Box<BoolExpression<Real>>),
15
16 Not(Box<BoolExpression<Real>>),
18
19 Equal(Box<RealExpression<Real>>, Box<RealExpression<Real>>),
21 Greater(Box<RealExpression<Real>>, Box<RealExpression<Real>>),
22 GreaterEqual(Box<RealExpression<Real>>, Box<RealExpression<Real>>),
23 Less(Box<RealExpression<Real>>, Box<RealExpression<Real>>),
24 LessEqual(Box<RealExpression<Real>>, Box<RealExpression<Real>>),
25 NotEqual(Box<RealExpression<Real>>, Box<RealExpression<Real>>),
26
27 StrEqual(StringExpression, StringExpression),
29 StrNotEqual(StringExpression, StringExpression),
30}
31
32#[derive(Clone, Debug)]
34pub enum RealExpression<Real> {
35 Add(Box<RealExpression<Real>>, Box<RealExpression<Real>>),
37 Div(Box<RealExpression<Real>>, Box<RealExpression<Real>>),
38 Mul(Box<RealExpression<Real>>, Box<RealExpression<Real>>),
39 Pow(Box<RealExpression<Real>>, Box<RealExpression<Real>>),
40 Sub(Box<RealExpression<Real>>, Box<RealExpression<Real>>),
41
42 Neg(Box<RealExpression<Real>>),
44
45 Literal(Real),
47
48 Binding(BindingId),
50}
51
52#[derive(Clone, Debug)]
53pub enum StringExpression {
54 Literal(String),
55 Binding(BindingId),
56}
57
58pub type BindingId = usize;