nushell/crates/nu-protocol/src/ast/expr.rs

29 lines
803 B
Rust
Raw Normal View History

2021-09-07 00:02:24 +02:00
use super::{Call, Expression, FullCellPath, Operator, RangeOperator};
2021-09-02 20:21:37 +02:00
use crate::{BlockId, Signature, Span, VarId};
2021-09-02 10:25:22 +02:00
#[derive(Debug, Clone)]
pub enum Expr {
Bool(bool),
Int(i64),
Float(f64),
Range(
Option<Box<Expression>>,
Option<Box<Expression>>,
RangeOperator,
),
2021-09-02 10:25:22 +02:00
Var(VarId),
Call(Box<Call>),
ExternalCall(Vec<u8>, Vec<Vec<u8>>),
Operator(Operator),
BinaryOp(Box<Expression>, Box<Expression>, Box<Expression>), //lhs, op, rhs
Subexpression(BlockId),
Block(BlockId),
List(Vec<Expression>),
Table(Vec<Expression>, Vec<Vec<Expression>>),
Keyword(Vec<u8>, Span, Box<Expression>),
String(String), // FIXME: improve this in the future?
2021-09-07 00:02:24 +02:00
FullCellPath(Box<FullCellPath>),
2021-09-02 10:25:22 +02:00
Signature(Box<Signature>),
Garbage,
}