pub enum Expr {
Show 16 variants
Variable(Identifier),
IntConst(i32),
UIntConst(u32),
BoolConst(bool),
FloatConst(f32),
DoubleConst(f64),
Unary(UnaryOp, Box<Expr>),
Binary(BinaryOp, Box<Expr>, Box<Expr>),
Ternary(Box<Expr>, Box<Expr>, Box<Expr>),
Assignment(Box<Expr>, AssignmentOp, Box<Expr>),
Bracket(Box<Expr>, ArraySpecifier),
FunCall(FunIdentifier, Vec<Expr>),
Dot(Box<Expr>, Identifier),
PostInc(Box<Expr>),
PostDec(Box<Expr>),
Comma(Box<Expr>, Box<Expr>),
}
Expand description
The most general form of an expression. As you can see if you read the variant list, in GLSL, an assignment is an expression. This is a bit silly but think of an assignment as a statement first then an expression which evaluates to what the statement “returns”.
An expression is either an assignment or a list (comma) of assignments.
Variants§
Variable(Identifier)
A variable expression, using an identifier.
IntConst(i32)
Integral constant expression.
UIntConst(u32)
Unsigned integral constant expression.
BoolConst(bool)
Boolean constant expression.
FloatConst(f32)
Single precision floating expression.
DoubleConst(f64)
Double precision floating expression.
Unary(UnaryOp, Box<Expr>)
A unary expression, gathering a single expression and a unary operator.
Binary(BinaryOp, Box<Expr>, Box<Expr>)
A binary expression, gathering two expressions and a binary operator.
Ternary(Box<Expr>, Box<Expr>, Box<Expr>)
A ternary conditional expression, gathering three expressions.
Assignment(Box<Expr>, AssignmentOp, Box<Expr>)
An assignment is also an expression. Gathers an expression that defines what to assign to, an assignment operator and the value to associate with.
Bracket(Box<Expr>, ArraySpecifier)
Add an array specifier to an expression.
FunCall(FunIdentifier, Vec<Expr>)
A functional call. It has a function identifier and a list of expressions (arguments).
Dot(Box<Expr>, Identifier)
An expression associated with a field selection (struct).
PostInc(Box<Expr>)
Post-incrementation of an expression.
PostDec(Box<Expr>)
Post-decrementation of an expression.
Comma(Box<Expr>, Box<Expr>)
An expression that contains several, separated with comma.