An expression is a calculation statement of
one or more tokens that results in a numerical value, a pointer,
or a void expression.
Expression ::= Constant | IdentifierName | this | UnaryExpression |
BinaryExpression | ParentheticalExpression | FunctionCallExpression |
NavigationExpressionSingular | NavigationExpressionPlural |
NewChildExpressionSingular | NewChildExpressionPlural | NewExpressionSingular |
NewExpressionPlural | SizeOfExpression | UnaryMathExpression |
BinaryMathExpression | IndexedDereference
A unary expression is composed of a single unary operator
preceding an expression.
UnaryExpression ::= TypeCastExpression | AddressOf | UnaryInversion |
PointerDeref | PrefixIncrement
A binary expression is composed of a binary operator
between two expressions.
BinaryExpression ::= StructureMemberSelection |
PointerToStructureMemberSelection | Multiply | Divide | Modulo | Add | Subtract
| ShiftLeft | ShiftRight | Relational | Bitwise | Logical | Assignment |
AssignmentWithOperation
A function call expression is composed of a function name
and argument list (which could be empty).
FunctionCallExpression ::= IdentifierName S? (FunctionCallNoArguments |
ArgumentExpression)
See also: [Expression
characteristics] [Identifier interpretations]
[Built-in functions] [Special
load considerations]
[Additional rules for expressions] [Final
expression type result] [L-value status gain and
loss]
[Overly complex expressions] [Limitations
on pointer usage] [Structure member
dereference: bit scan blocks]
|