Ada Programming/Expressions

Expressions 1

  An expression is a formula that defines the computation or retrieval of a value. In this International Standard, the term ``expression refers to a construct of the syntactic category expression or of any of the other five syntactic categories defined below.

Syntax 2 expression ::=

    relation {and relation}  | relation {and then relation}
  | relation {or relation}  | relation {or else relation}
  | relation {xor relation}

3 relation ::=

    simple_expression [relational_operator simple_expression]
  | simple_expression [not] in range
  | simple_expression [not] in subtype_mark

4 simple_expression ::= [unary_adding_operator] term {binary_adding_operator term} 5 term ::= factor {multiplying_operator factor} 6 factor ::= primary [** primary] | abs primary | not primary 7 primary ::=

  numeric_literal | null | string_literal | aggregate
| name | qualified_expression | allocator | (expression)

Name Resolution Rules 8

  A name used as a primary shall resolve to denote an object or a value.

Static Semantics 9

  Each expression has a type; it specifies the computation or retrieval of a value of that type.

Dynamic Semantics 10

   The value of a primary that is a name denoting an object is the value of the object.

Implementation Permissions 11

   For the evaluation of a primary that is a name denoting an object of an unconstrained numeric subtype, if the value of the object is outside the base range of its type, the implementation may either raise Constraint_Error or return the value of the object.

Examples 12

   Examples of primaries:

13 4.0 -- real literal

Pi -- named number

(1 .. 10 => 0) -- array aggregate

Sum -- variable

Integer'Last -- attribute

Sine(X) -- function call

Color'(Blue) -- qualified expression

Real(M*N) -- conversion

(Line_Count + 10) -- parenthesized expression 14

   Examples of expressions:

15 Volume -- primary.

not Destroyed -- factor.

2*Line_Count -- term.

-4.0 -- simple expression.

-4.0 + A -- simple expression.

B**2 - 4.0*A*C -- simple expression.

Password(1 .. 3) = "Bwv" -- relation.

Count in Small_Int -- relation.

Count not in Small_Int -- relation.

Index = 0 or Item_Hit -- expression.

(Cold and Sunny) or Warm -- expression (parentheses are required).

A**(B**C) -- expression (parentheses are required).

Last modified on 10 July 2012, at 21:04