|
|
@@ -30,7 +30,8 @@
|
|
|
- [8.1 Операнды](#81-операнды)
|
|
|
- [8.2 Операторы](#82-операторы)
|
|
|
- [8.2.1 Логические операции](#821-логические-операции)
|
|
|
- - [8.2.2 Арифметические операции](#822-арифметические-операции)
|
|
|
+ - [8.2.2 Арифметические операторы](#822-арифметические-операторы)
|
|
|
+ - [8.2.3 Отношения](#823-отношения)
|
|
|
- [Ссылки](#ссылки)
|
|
|
|
|
|
## 0. Введение
|
|
|
@@ -224,7 +225,6 @@ flowchart TD
|
|
|
| ] | Закрывающая квадратная скобка (массив) |
|
|
|
| { | Фигурная открывающая скобка (область видимости) |
|
|
|
| } | Закрывающая фигурная скобка (область видимости) |
|
|
|
-| ВНУТРИ | IN Определение вхождения |
|
|
|
| ЕСТЬ | IS Проверка типа |
|
|
|
| БУЛ | BOOL Белвый тип |
|
|
|
| ДА | TRUE Булево значение |
|
|
|
@@ -534,7 +534,7 @@ t(УзелСредний).подузел(Дерево)
|
|
|
> p И q // обозначает «если р, то q, иначе НЕТ
|
|
|
> НЕ P // означает "не p"
|
|
|
|
|
|
-### 8.2.2 Арифметические операции
|
|
|
+### 8.2.2 Арифметические операторы
|
|
|
|
|
|
| Символ | Результат |
|
|
|
| ------ | ------------------------ |
|
|
|
@@ -545,37 +545,35 @@ t(УзелСредний).подузел(Дерево)
|
|
|
| ДИВ | целое частное от деления |
|
|
|
| МОД | целое модуль от деления |
|
|
|
|
|
|
-Операции +, -, * и / применяются к операндам числовых типов. Оба операнда должны быть одного типа, что также определяет тип результата. При использовании в качестве унарных операций "-" обозначает инверсию знака, а "+" обозначает операцию идентичности. Операции DIV и MOD применяются только к целочисленным операндам. Пусть q = x DIV y, а r = x MOD y. Тогда множитель q и остаток r определяются уравнением
|
|
|
- X = q * y + r 0 <= r < y
|
|
|
-
|
|
|
-8.2.3 Операторы наборов
|
|
|
- Символ Результат
|
|
|
- + объединение
|
|
|
- - разность
|
|
|
- * пересечение
|
|
|
- / cимметричная разность наборов
|
|
|
-
|
|
|
-.
|
|
|
-
|
|
|
-Когда используется с одним операндом типа SET, знак минус обозначает дополнение набора.
|
|
|
-8.2.4 Отношения
|
|
|
- Символ Результат
|
|
|
- = равно
|
|
|
- # неравно
|
|
|
- < меньше
|
|
|
- <= меньше или равно
|
|
|
- > больше
|
|
|
- = больше или равно
|
|
|
- IN членство в наборе
|
|
|
- IS проверка типа
|
|
|
-
|
|
|
-Результат операций отношения является базовым типом BOOLEAN. ОперацияОтношение упорядочения <, <=,>,> = применяется к числовым типам, CHAR и литерным массивам. Отношения = и # применимы также к типам BOOLEAN, SET, ссылкам и процедурным типам.
|
|
|
-x IN s означает "x является элементом s". x должен иметь тип `ЦЕЛОЕ` и s должен быть типом SET.
|
|
|
-v IS T означает «v имеет тип T» и вызывает проверку типа. Это применимо, если
|
|
|
- 1. T - расширение объявленного типа T0 для v, и если
|
|
|
- 2. v - параметр, как переменная типа записи или v - ссылка.
|
|
|
-
|
|
|
-Предполагая, например, что T является расширением T0 и что v является ссылкой на тип T0, тогда проверка v IS T определяет, является ли фактически указанная переменная (также, а не только T0) типом T. Значение NIL IS T не определено.
|
|
|
+Операторы `+`, `-`, `*` и `/` применяются к операндам числовых типов. Оба операнда *должны быть одного типа*, что также определяет тип результата. При использовании в качестве унарных операторов:
|
|
|
+- `-` обозначает инверсию знака;
|
|
|
+- `+` обозначает оператор идентичности.
|
|
|
+
|
|
|
+Операции `DIV` и `MOD` применяются *только* к целочисленным операндам. Пусть `q = x ДИВ y`, а `r = x МОД y`. Тогда множитель `q` и остаток `r` определяются уравнением:
|
|
|
+
|
|
|
+> x = q * y + r
|
|
|
+> 0 <= r < y
|
|
|
+
|
|
|
+### 8.2.3 Отношения
|
|
|
+
|
|
|
+| Символ | Результат |
|
|
|
+| ------ | ---------------- |
|
|
|
+| = | равно |
|
|
|
+| != | неравно |
|
|
|
+| < | меньше |
|
|
|
+| <= | меньше или равно |
|
|
|
+| > | больше |
|
|
|
+| = | больше или равно |
|
|
|
+| ЕСТЬ | проверка типа |
|
|
|
+
|
|
|
+Результат операций отношения является базовым типом `БУЛ`. `ОперацияОтношение` (`<`, `<=`,`>`,`=`) применяется к числовым типам и `БАЙТ`. Отношения `=` и `!=` применимы также к типам `БУЛ`, ссылкам и процедурным типам.
|
|
|
+
|
|
|
+`v ЕСТЬ T` означает `v ЯВЛЯЕТСЯ типом T` и вызывает проверку типа. Это применимо, если выполнены все условия:
|
|
|
+
|
|
|
+- `T` расширение объявленной структуры `T0` для `v`;
|
|
|
+- `v` параметр, как переменная заданного типа структуры.
|
|
|
+
|
|
|
+Предполагая, например, что `T` является расширением `T0` и что `v` является ссылкой на структуру `T0`, тогда проверка `v ЕСТЬ T` определяет, является ли фактически указанная переменная (в том числе, а не только `T0`) cтруктурой типа `T`. Значение `ПУСТО ЕСТЬ Т` возвращает отрицательный результат.
|
|
|
Примеры выражений (см. Примеры в главе 7):
|
|
|
1987 (`ЦЕЛОЕ`)
|
|
|
I DIV 3 (`ЦЕЛОЕ`)
|
|
|
@@ -588,7 +586,7 @@ v IS T означает «v имеет тип T» и вызывает про
|
|
|
K IN {i .. j-1} (BOOLEAN)
|
|
|
T IS УзелСредний (BOOLEAN)
|
|
|
|
|
|
-9. Предписания
|
|
|
+1. Предписания
|
|
|
Предписания обозначают действия. Есть простые и сложные предписания. Простые предписания не состоят из каких-либо частей, которые сами являлись бы предписаниями. Простые предписания -- просто присваивания, либо вызов процедур. Сложные предписания состоят из частей, которые сами являются предписаниями. Они используются, чтобы выразить последовательное и условное, выборочное и повторное действие. Предписания также могут быть пустыми, и в этом случае они не обозначают никаких действий. Пустое предписание включено в язык для того, чтобы ослабить правила пунктуации в последовательностях предписаний.
|
|
|
|
|
|
Предписание = [Присвоение | ВызовПроцедур | Предписание_IF | Предписание_CASE | Предписание_WHILE | Предписание_REPEAT | Предписание_FOR].
|