pub enum Expr {
Show 27 variants
Ident(Identifier),
Path(NamePath),
StringLiteral(StringLiteral),
Bool {
value: bool,
span: Span,
},
Binary {
left: Box<Expr>,
op: ValkyrieTokenType,
right: Box<Expr>,
span: Span,
},
Unary {
op: ValkyrieTokenType,
expr: Box<Expr>,
span: Span,
},
Call {
callee: Box<Expr>,
args: Vec<Expr>,
span: Span,
},
Field {
receiver: Box<Expr>,
field: Identifier,
span: Span,
},
Index {
receiver: Box<Expr>,
index: Box<Expr>,
span: Span,
},
Offset {
receiver: Box<Expr>,
offset: Box<Expr>,
span: Span,
},
Paren {
expr: Box<Expr>,
span: Span,
},
Block(Block),
Lambda(LambdaExpr),
Object {
callee: Box<Expr>,
fields: Vec<(Identifier, Option<Expr>)>,
span: Span,
},
AnonymousClass {
parents: Vec<String>,
items: Vec<Item>,
captures: Vec<Identifier>,
span: Span,
},
If {
pattern: Option<Pattern>,
condition: Box<Expr>,
then_branch: Block,
else_branch: Option<Block>,
span: Span,
},
Match {
scrutinee: Box<Expr>,
arms: Vec<MatchArm>,
span: Span,
},
Loop {
kind: LoopKind,
label: Option<String>,
pattern: Option<Pattern>,
condition: Option<Box<Expr>>,
body: Block,
span: Span,
},
Return {
expr: Option<Box<Expr>>,
span: Span,
},
Break {
label: Option<String>,
expr: Option<Box<Expr>>,
span: Span,
},
Continue {
label: Option<String>,
span: Span,
},
Yield {
expr: Option<Box<Expr>>,
yield_from: bool,
span: Span,
},
Raise {
expr: Box<Expr>,
span: Span,
},
Resume {
expr: Box<Expr>,
span: Span,
},
Catch {
expr: Box<Expr>,
arms: Vec<MatchArm>,
span: Span,
},
With {
base: Box<Expr>,
updates: Vec<(Identifier, Expr)>,
span: Span,
},
SuperCall {
parent_alias: Option<Identifier>,
method: Identifier,
args: Vec<Expr>,
span: Span,
},
}Expand description
An expression
Variants§
Ident(Identifier)
An identifier expression.
Path(NamePath)
A name path expression (e.g., std::collections::HashMap).
StringLiteral(StringLiteral)
A string literal expression.
Bool
A boolean literal expression.
Binary
A binary operation expression.
Fields
op: ValkyrieTokenTypeThe binary operator.
Unary
A unary operation expression.
Fields
op: ValkyrieTokenTypeThe unary operator.
Call
A function call expression.
Fields
Field
A field access expression.
Fields
field: IdentifierThe field name.
Index
An index expression.
Fields
Offset
An offset expression (pointer arithmetic).
Fields
Paren
A parenthesized expression.
Block(Block)
A block expression.
Lambda(LambdaExpr)
A lambda expression.
Object
An object expression.
Creates a new object instance with specified field values.
let p = Point { x: 10, y: 20 }
let shorthand = Point { x, y } // shorthand syntaxFields
fields: Vec<(Identifier, Option<Expr>)>The field-value pairs. None for shorthand syntax.
AnonymousClass
Anonymous class expression.
let obj = class { x: 10, y: 20 }
let impl_trait = class: Trait { ... }Fields
captures: Vec<Identifier>Variables captured from the enclosing scope.
If
An if expression.
Fields
Match
A match expression.
Fields
Loop
A loop expression.
Fields
Return
A return expression.
Fields
Break
A break expression.
Fields
Continue
A continue expression.
Fields
Yield
A yield expression.
Fields
Raise
A raise (throw) expression.
Resume
A resume expression.
Resumes execution from an effect handler with a value. Only valid inside a catch block.
catch process() {
case Read { prompt }: resume "input data"
}Catch
A catch (try-catch) expression.
Fields
With
With expression for functional record updates.
Creates a new record by copying an existing one and updating specified fields.
let p2 = p1.with { x: 20.0, y: 30.0 }
let updated = config.with { timeout: 60 }Fields
updates: Vec<(Identifier, Expr)>Field updates to apply.
SuperCall
Super call expression for constructor chaining.
Represents a call to a parent class constructor within a subclass constructor.
class Derived(Base) {
initiate(mut self, x: i32, y: i32) {
super.initiate(x) // Call parent constructor
self.y = y
}
}Fields
parent_alias: Option<Identifier>Optional parent alias for renamed inheritance.
In renamed inheritance, specifies which parent to call:
class Child(primary: ParentA, secondary: ParentB) {
initiate(mut self) {
super.primary.initiate() // alias: "primary"
}
}method: IdentifierThe method name to call (usually “initiate”).