Operation.ceylon
"An operator expression.
Operations combine [[Primaries|Primary]], as well as other operations, depending on precedence.
Operator precedence and associativity is represented in the AST through the child types of the nodes;
an AST that would violate associativity (for example, using a sum expression as the direct child of a
product expression – without wrapping it in a [[GroupedExpression]]) isn’t well-typed.
This class is called `Operation` rather than `OperatorExpression` to avoid overly long names
of the subtypes; for the same reason, subtypes are only suffixed `-Operation` rather than `-BinaryOperation`
or `-UnaryOperation`.
The specification also lists expressions like `\"Hello\"[...3]` under operators;
in `ceylon.ast`, they are called [[ElementOrSubrangeExpression]],
and [[primaries|Primary]]."
shared abstract class Operation()
of UnaryIshOperation | BinaryOperation | WithinOperation
extends ValueExpression() {
"The text of the operator."
shared formal String operator;
shared actual formal <Expression|Type|Bound>[] children;
}