Files
zen/core/expression/src/parser/ast.rs
T
stefan-gorules 5f423b7910 feat: zen expression rewrite (#107)
* temp: zen-expression rewrite

* rewrite standard parser

* stabilise parser, upgrade dependencies

* implement unary parser

* align builtin behavior

* fix tests and minor bugs

* refactor exports, update docs

* fix expression repl

* cleanup

* cleanup vm

* replace expression with expression-rewrite

* update d.ts file

* fix failing test
2023-12-12 08:50:25 +01:00

50 lines
1.0 KiB
Rust

use rust_decimal::Decimal;
use crate::lexer::Operator;
use crate::parser::builtin::BuiltInFunction;
#[derive(Debug, PartialEq, Clone)]
pub enum Node<'a> {
Null,
Bool(bool),
Number(Decimal),
String(&'a str),
Pointer,
Array(&'a [&'a Node<'a>]),
Identifier(&'a str),
Closure(&'a Node<'a>),
Member {
node: &'a Node<'a>,
property: &'a Node<'a>,
},
Slice {
node: &'a Node<'a>,
from: Option<&'a Node<'a>>,
to: Option<&'a Node<'a>>,
},
Interval {
left: &'a Node<'a>,
right: &'a Node<'a>,
left_bracket: &'a str,
right_bracket: &'a str,
},
Conditional {
condition: &'a Node<'a>,
on_true: &'a Node<'a>,
on_false: &'a Node<'a>,
},
Unary {
node: &'a Node<'a>,
operator: Operator,
},
Binary {
left: &'a Node<'a>,
operator: Operator,
right: &'a Node<'a>,
},
BuiltIn {
kind: BuiltInFunction,
arguments: &'a [&'a Node<'a>],
},
}