## 8. Expressions 

An expression denotes a rule of computation that yields a value when the expression is evaluated, except when the expression activates a function and that activation is terminated by a goto statement (see Sections 9.1.3 and 10). The value that is yielded depends upon the values of the constants, bounds, and variables in the expression and also upon the operators and functions that the expression invokes. 

Expression= SimpleExpression [RelationalOperator SimpleExpressionl SimpleExpression = [ Sign] Term! AddingOperator Term I . Term = Factor! MultiplyingOperator Factor I . Factor = UnsignedConstant' Boundldentifier' Variable' SetConstructor , FunctionDesignator' "not" Factor' "C' Expression ")" . UnsignedConstant = UnsignedNumber' CharacterString' Constantldentifier' "ni 1" . SetConstructor = "[" [ElementDescription ! ElementDescription I ] "]" . ElementDescription = OrdinalExpression [ .... " OrdinalExpression] . FunctionDesignator = Functionldentifier [ ActualParameterList] . RelationalOperator = "=" , "<>" , "<" , "<=" , ">" , ">=" / "in" . AddingOperator = "+" , "-" , "or" . MultiplyingOperator= "*"'''j'' / "div" '''mod'' / "and". 

An ordinal expression is an expression that possesses an ordinal type. A Boolean expression or integer expression is an ordinal expression that possesses the type Boolean or Integer, respectively. 

OrdinalExpression = Expression. BooleanExpression = OrdinalE\pression . IntegerEJ.pression = OrdinalExpression . 

## 8.1. Operands 

A mUltiplying operator in a term has two operands: the part ofthe term that precedes the operator, and the factor that immediately follows the operator. An adding operator in a simple expression has two operands: 

