pub enum Expr {
Show 15 variants
Literal(Literal),
Idiom(Idiom),
Param(String),
Table(Spanned<String>),
RecordId {
table: Spanned<String>,
id: ByteRange,
range: bool,
},
Binary {
lhs: Box<Spanned<Expr>>,
op: Spanned<BinaryOp>,
rhs: Box<Spanned<Expr>>,
},
Prefix {
op: Spanned<PrefixOp>,
expr: Box<Spanned<Expr>>,
},
Call(Call),
Object(Vec<(Spanned<String>, Spanned<Expr>)>),
Array(Vec<Spanned<Expr>>),
Subquery(Box<Spanned<Statement>>),
Block(Block),
Cast {
ty: Spanned<TypeExpr>,
expr: Box<Spanned<Expr>>,
},
Closure(Closure),
Partial(PartialNode),
}Expand description
A value-producing expression.
Variants§
Literal(Literal)
A literal value.
Idiom(Idiom)
A field path / graph traversal, rooted in the current row context or
in a leading value (see IdiomPart::Start).
Param(String)
A bare $name — parameter or LET binding reference (without $).
$name.field chains lower as Idiom with a Start part instead.
Table(Spanned<String>)
A table reference. Only produced in source/target positions
(FROM person, CREATE person): a bare identifier in expression
position is a field path, not a table.
RecordId
A record id literal: person:one. The id’s internal structure is
kept opaque (ids can be composite; nothing consumes their shape).
Fields
Binary
A binary operation: a + b, a AND b.
Fields
Prefix
A prefix operation: !x, -x.
Call(Call)
A function call.
Object(Vec<(Spanned<String>, Spanned<Expr>)>)
An object literal: { a: 1, b: 2 }.
Array(Vec<Spanned<Expr>>)
An array literal: [1, 2, 3].
Subquery(Box<Spanned<Statement>>)
A parenthesized statement used as a value: (SELECT ...).
Block(Block)
A { ...; ... } block used as a value.
Cast
A type cast: <int> $x.
Closure(Closure)
A closure value.
Partial(PartialNode)
An expression that failed to lower.