Contents Index Search Previous Next
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)
Contents Index Search Previous Next Legal