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

37 lines
1.1 KiB
Rust
Raw Normal View History

2021-10-02 04:59:11 +02:00
use super::{Call, CellPath, Expression, FullCellPath, Operator, RangeOperator};
2021-10-05 04:27:39 +02:00
use crate::{BlockId, Signature, Span, Spanned, Unit, 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>>, // from
Option<Box<Expression>>, // next value after "from"
Option<Box<Expression>>, // to
RangeOperator,
),
2021-09-02 10:25:22 +02:00
Var(VarId),
2021-10-25 22:04:23 +02:00
VarDecl(VarId),
2021-09-02 10:25:22 +02:00
Call(Box<Call>),
2021-10-09 00:30:10 +02:00
ExternalCall(String, Span, Vec<Expression>),
2021-09-02 10:25:22 +02:00
Operator(Operator),
2021-09-09 23:47:20 +02:00
RowCondition(VarId, Box<Expression>),
2021-09-02 10:25:22 +02:00
BinaryOp(Box<Expression>, Box<Expression>, Box<Expression>), //lhs, op, rhs
Subexpression(BlockId),
Block(BlockId),
List(Vec<Expression>),
Table(Vec<Expression>, Vec<Vec<Expression>>),
2021-11-11 00:14:00 +01:00
Record(Vec<(Expression, Expression)>),
2021-09-02 10:25:22 +02:00
Keyword(Vec<u8>, Span, Box<Expression>),
2021-10-05 04:27:39 +02:00
ValueWithUnit(Box<Expression>, Spanned<Unit>),
2021-10-04 21:21:31 +02:00
Filepath(String),
GlobPattern(String),
2021-10-12 19:44:23 +02:00
String(String),
2021-10-02 04:59:11 +02:00
CellPath(CellPath),
2021-09-07 00:02:24 +02:00
FullCellPath(Box<FullCellPath>),
2021-09-02 10:25:22 +02:00
Signature(Box<Signature>),
Garbage,
}