1use rust_decimal::Decimal;
2
3#[derive(Debug, PartialEq, Clone)]
4pub enum Node<'a> {
5 Null,
6 Bool(bool),
7 Number(Decimal),
8 String(&'a str),
9 Pointer,
10 Array(&'a [&'a Node<'a>]),
11 Identifier(&'a str),
12 Closure(&'a Node<'a>),
13 Member {
14 node: &'a Node<'a>,
15 property: &'a Node<'a>,
16 },
17 Slice {
18 node: &'a Node<'a>,
19 from: Option<&'a Node<'a>>,
20 to: Option<&'a Node<'a>>,
21 },
22 Interval {
23 left: &'a Node<'a>,
24 right: &'a Node<'a>,
25 left_bracket: &'a str,
26 right_bracket: &'a str,
27 },
28 Conditional {
29 condition: &'a Node<'a>,
30 on_true: &'a Node<'a>,
31 on_false: &'a Node<'a>,
32 },
33 Unary {
34 node: &'a Node<'a>,
35 operator: &'a str,
36 },
37 Binary {
38 left: &'a Node<'a>,
39 operator: &'a str,
40 right: &'a Node<'a>,
41 },
42 BuiltIn {
43 name: &'a str,
44 arguments: &'a [&'a Node<'a>],
45 },
46}