Справочник Ada 2012
4.4 Выражения
Выражение — это формула, определяющая вычисление или получение значения. В данном международном стандарте термин «выражение» относится к конструкции синтаксической категории выражение или любой из следующих категорий: выражение_выбора, отношение_выбора, отношение, простое_выражение, член, множитель, операнд, условное_выражение, квантифицированное_выражение.
Синтаксис
выражение ::=
отношение {и отношение} | отношение {и тогда отношение}
| отношение {или отношение} | отношение {или иначе отношение}
| отношение {исключающее_или отношение}
отношение {и отношение} | отношение {и тогда отношение}
| отношение {или отношение} | отношение {или иначе отношение}
| отношение {исключающее_или отношение}
выражение_выбора ::=
отношение_выбора {и отношение_выбора}
| отношение_выбора {или отношение_выбора}
| отношение_выбора {исключающее_или отношение_выбора}
| отношение_выбора {и тогда отношение_выбора}
| отношение_выбора {или иначе отношение_выбора}
отношение_выбора {и отношение_выбора}
| отношение_выбора {или отношение_выбора}
| отношение_выбора {исключающее_или отношение_выбора}
| отношение_выбора {и тогда отношение_выбора}
| отношение_выбора {или иначе отношение_выбора}
отношение ::=
простое_выражение [операция_сравнения простое_выражение]
| проверяемоепростое_выражение [не] в список_выбора_принадлежности
| выражение_вызова_исключения
простое_выражение [операция_сравнения простое_выражение]
| проверяемоепростое_выражение [не] в список_выбора_принадлежности
| выражение_вызова_исключения
операнд ::=
числовая_константа | null | строковая_константа | агрегат
| идентификатор | аллокатор | (выражение)
| (условное_выражение) | (квантифицированное_выражение)
числовая_константа | null | строковая_константа | агрегат
| идентификатор | аллокатор | (выражение)
| (условное_выражение) | (квантифицированное_выражение)
Правила разрешения имен
Идентификатор, используемый в качестве операнда, должен быть разрешён для обозначения объекта или значения.
Статическая семантика
Каждое выражение имеет тип; он определяет вычисление или получение значения этого типа.
Динамическая семантика
Значение операнда, являющегося идентификатором, обозначающим объект, — это значение объекта.
Разрешения для реализации
При вычислении операнда, который является именем, обозначающим объект без ограничения числового подтипа, если значение объекта находится за пределами базового диапазона его типа, реализация может либо вызвать ошибку Constraint_Error, либо вернуть значение объекта.
Примеры
Примеры операндов:
4.0 -- вещественная константа
Пи -- именованное число
(1 .. 10 => 0) -- агрегат массива
Сумма -- переменная
Integer'Last -- атрибут
Sine(X) -- вызов функции
Color'(Blue) -- квалифицированное выражение
Real(M*N) -- преобразование
(Line_Count + 10) -- выражение в скобках
Пи -- именованное число
(1 .. 10 => 0) -- агрегат массива
Сумма -- переменная
Integer'Last -- атрибут
Sine(X) -- вызов функции
Color'(Blue) -- квалифицированное выражение
Real(M*N) -- преобразование
(Line_Count + 10) -- выражение в скобках
Примеры выражений:
Объем -- операнд
не Уничтожено -- множитель
2*Line_Count -- член
-4.0 -- простое выражение
-4.0 + A -- простое выражение
B**2 - 4.0*A*C -- простое выражение
R*Sin(θ)*Cos(φ) -- простое выражение
Password(1 .. 3) = "Bwv" -- отношение
Count в Small_Int -- отношение
Count не в Small_Int -- отношение
Index = 0 или Item_Hit -- выражение
(Cold и Sunny) или Warm -- выражение (скобки обязательны)
A**(B**C) -- выражение (скобки обязательны)
не Уничтожено -- множитель
2*Line_Count -- член
-4.0 -- простое выражение
-4.0 + A -- простое выражение
B**2 - 4.0*A*C -- простое выражение
R*Sin(θ)*Cos(φ) -- простое выражение
Password(1 .. 3) = "Bwv" -- отношение
Count в Small_Int -- отношение
Count не в Small_Int -- отношение
Index = 0 или Item_Hit -- выражение
(Cold и Sunny) или Warm -- выражение (скобки обязательны)
A**(B**C) -- выражение (скобки обязательны)