Go to the first, previous, next, last section, table of contents.


4.4 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)
    


Go to the first, previous, next, last section, table of contents.