pub enum RubyExpr {
Show 14 variants
Lit(RubyLit),
Var(String),
BinOp(String, Box<RubyExpr>, Box<RubyExpr>),
UnaryOp(String, Box<RubyExpr>),
Call(String, Vec<RubyExpr>),
MethodCall(Box<RubyExpr>, String, Vec<RubyExpr>),
Block(Vec<String>, Vec<RubyStmt>),
Lambda(Vec<String>, Vec<RubyStmt>),
If(Box<RubyExpr>, Box<RubyExpr>, Box<RubyExpr>),
Case(Box<RubyExpr>, Vec<(RubyExpr, RubyExpr)>, Option<Box<RubyExpr>>),
Array(Vec<RubyExpr>),
Hash(Vec<(RubyExpr, RubyExpr)>),
Assign(String, Box<RubyExpr>),
Return(Box<RubyExpr>),
}Expand description
Ruby expression AST.
Variants§
Lit(RubyLit)
Literal value: 42, "hello", :sym, nil
Var(String)
Variable / local name: x, result, _t0
BinOp(String, Box<RubyExpr>, Box<RubyExpr>)
Binary operator: lhs + rhs, a == b, x && y
UnaryOp(String, Box<RubyExpr>)
Unary operator: !x, -n, ~bits
Call(String, Vec<RubyExpr>)
Free function call: foo(a, b)
MethodCall(Box<RubyExpr>, String, Vec<RubyExpr>)
Method call: obj.method(a, b)
Block(Vec<String>, Vec<RubyStmt>)
Block with brace syntax: { |x| expr }
Lambda(Vec<String>, Vec<RubyStmt>)
Lambda (stabby): ->(x, y) { body }
If(Box<RubyExpr>, Box<RubyExpr>, Box<RubyExpr>)
Ternary / conditional expression: cond ? then_e : else_e
Case(Box<RubyExpr>, Vec<(RubyExpr, RubyExpr)>, Option<Box<RubyExpr>>)
case expression with when branches (value-based)
Array(Vec<RubyExpr>)
Array literal: [a, b, c]
Hash(Vec<(RubyExpr, RubyExpr)>)
Hash literal: { key: val, ... } (symbol keys) or { "k" => v }
Assign(String, Box<RubyExpr>)
Local variable assignment expression: x = expr (returns the rhs)
Return(Box<RubyExpr>)
return expr
Trait Implementations§
impl StructuralPartialEq for RubyExpr
Auto Trait Implementations§
impl Freeze for RubyExpr
impl RefUnwindSafe for RubyExpr
impl Send for RubyExpr
impl Sync for RubyExpr
impl Unpin for RubyExpr
impl UnsafeUnpin for RubyExpr
impl UnwindSafe for RubyExpr
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more