mini_builder_rs/parser/
expression.rs1use crate::{tokenizer::token::TokenType, value::Value};
2
3pub type Expressions<'a> = Vec<Box<Expression<'a>>>;
5
6pub type NamedExpressions<'a> = Vec<Box<(&'a str, Expression<'a>)>>;
8
9#[derive(Debug, Clone)]
11pub enum Expression<'a> {
12 Additive(Expressions<'a>, Expressions<'a>),
14 Multiplicative(Expressions<'a>, Expressions<'a>),
15 Negate(Box<Expression<'a>>),
16 Or(Expressions<'a>),
18 And(Expressions<'a>),
19 Not(Box<Expression<'a>>),
20 Comparison(Box<Expression<'a>>, TokenType, Box<Expression<'a>>),
22 Value(Value),
24 Variable(&'a str),
25 ListValue(Expressions<'a>),
26 Builder(&'a str, NamedExpressions<'a>),
28 FunctionCall(&'a str, Expressions<'a>),
29 IndexOf(Box<Expression<'a>>, Box<Expression<'a>>),
30 Ternary(
32 Box<Expression<'a>>,
33 Box<Expression<'a>>,
34 Box<Expression<'a>>,
35 ),
36}