pub enum ExprData {
Show 16 variants
Variable(Node<IdentifierData>),
IntConst(i32),
UIntConst(u32),
BoolConst(bool),
FloatConst(f32),
DoubleConst(f64),
Unary(Node<UnaryOpData>, Box<Node<ExprData>>),
Binary(Node<BinaryOpData>, Box<Node<ExprData>>, Box<Node<ExprData>>),
Ternary(Box<Node<ExprData>>, Box<Node<ExprData>>, Box<Node<ExprData>>),
Assignment(Box<Node<ExprData>>, Node<AssignmentOpData>, Box<Node<ExprData>>),
Bracket(Box<Node<ExprData>>, Box<Node<ExprData>>),
FunCall(Node<FunIdentifierData>, Vec<Node<ExprData>>),
Dot(Box<Node<ExprData>>, Node<IdentifierData>),
PostInc(Box<Node<ExprData>>),
PostDec(Box<Node<ExprData>>),
Comma(Box<Node<ExprData>>, Box<Node<ExprData>>),
}
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(Node<IdentifierData>)
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(Node<UnaryOpData>, Box<Node<ExprData>>)
A unary expression, gathering a single expression and a unary operator.
Binary(Node<BinaryOpData>, Box<Node<ExprData>>, Box<Node<ExprData>>)
A binary expression, gathering two expressions and a binary operator.
Ternary(Box<Node<ExprData>>, Box<Node<ExprData>>, Box<Node<ExprData>>)
A ternary conditional expression, gathering three expressions.
Assignment(Box<Node<ExprData>>, Node<AssignmentOpData>, Box<Node<ExprData>>)
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<Node<ExprData>>, Box<Node<ExprData>>)
Add an array specifier to an expression.
FunCall(Node<FunIdentifierData>, Vec<Node<ExprData>>)
A functional call. It has a function identifier and a list of expressions (arguments).
Dot(Box<Node<ExprData>>, Node<IdentifierData>)
An expression associated with a field selection (struct).
PostInc(Box<Node<ExprData>>)
Post-incrementation of an expression.
PostDec(Box<Node<ExprData>>)
Post-decrementation of an expression.
Comma(Box<Node<ExprData>>, Box<Node<ExprData>>)
An expression that contains several, separated with comma.