|
|
@@ -25,22 +25,22 @@
|
|
|
- [7 Тип функции](#7-тип-функции)
|
|
|
- [8. Объявление объектов](#8-объявление-объектов)
|
|
|
- [9. Выражения](#9-выражения)
|
|
|
- - [8.1 Операнды](#81-операнды)
|
|
|
- - [8.2 Операторы](#82-операторы)
|
|
|
- - [8.2.1 Логические операции](#821-логические-операции)
|
|
|
- - [8.2.2 Арифметические операторы](#822-арифметические-операторы)
|
|
|
- - [8.2.3 Отношения](#823-отношения)
|
|
|
+ - [9.1 Операнды](#91-операнды)
|
|
|
+ - [9.2 Операторы](#92-операторы)
|
|
|
+ - [9.2.1 Логические операции](#921-логические-операции)
|
|
|
+ - [9.2.2 Арифметические операторы](#922-арифметические-операторы)
|
|
|
+ - [9.2.3 Отношения](#923-отношения)
|
|
|
- [10. Предписания](#10-предписания)
|
|
|
- - [9.1 Предписание ПРИСВОЕНИЕ](#91-предписание-присвоение)
|
|
|
- - [9.3 Последовательность предписаний](#93-последовательность-предписаний)
|
|
|
- - [9.4 Предписание\_ЕСЛИ](#94-предписание_если)
|
|
|
- - [9.5 Предписание\_ВЫБОР](#95-предписание_выбор)
|
|
|
- - [9.7 Предписание цикл](#97-предписание-цикл)
|
|
|
+ - [10.1 Предписание ПРИСВОЕНИЕ](#101-предписание-присвоение)
|
|
|
+ - [10.3 Последовательность предписаний](#103-последовательность-предписаний)
|
|
|
+ - [10.4 Предписание\_ЕСЛИ](#104-предписание_если)
|
|
|
+ - [10.5 Предписание\_ВЫБОР](#105-предписание_выбор)
|
|
|
+ - [10.7 Предписание цикл](#107-предписание-цикл)
|
|
|
- [11. Объявление функций](#11--объявление-функций)
|
|
|
- - [10.1 Формальные параметры](#101-формальные-параметры)
|
|
|
- - [10.2. Встроенные функции](#102-встроенные-функции)
|
|
|
+ - [11.1 Формальные параметры](#111-формальные-параметры)
|
|
|
+ - [11.2. Встроенные функции](#112-встроенные-функции)
|
|
|
- [12. Модули](#12--модули)
|
|
|
- - [11.1 Модуль СИСТЕМА](#111-модуль-система)
|
|
|
+ - [12.1 Модуль СИСТЕМА](#121-модуль-система)
|
|
|
- [Приложение 1: Синтаксис Оберона](#приложение-1-синтаксис-оберона)
|
|
|
- [Приложение 2: Участники](#приложение-2-участники)
|
|
|
- [Пиложение 3: Ссылки](#пиложение-3-ссылки)
|
|
|
@@ -478,12 +478,12 @@ UNPK
|
|
|
```bash
|
|
|
тип {
|
|
|
База = структ абстракт {
|
|
|
- Открыть([]байт):ошибка;
|
|
|
- Закрыть():ошибка;
|
|
|
+ Открыть([]байт)ошибка;
|
|
|
+ Закрыть()ошибка;
|
|
|
}
|
|
|
БазаРасшир = структ абстракт (База) {
|
|
|
- Строить():ошибка;
|
|
|
- Шахта():уголь;
|
|
|
+ Строить()ошибка;
|
|
|
+ Шахта()уголь;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -536,7 +536,7 @@ UNPK
|
|
|
|
|
|
`Выражения` состоят из операндов и операторов. Также могут включать круглые скобки для выражения определённых правил вычисления операторов и операндов. Выражения разделяются литерой `;`.
|
|
|
|
|
|
-### 8.1 Операнды
|
|
|
+### 9.1 Операнды
|
|
|
|
|
|
За исключением чисел и литерных констант, операнды обозначаются именами. Обозначение операнда состоит из имени, которое может оносится к символам:
|
|
|
|
|
|
@@ -567,7 +567,7 @@ t.левый.правый (Дерево)
|
|
|
t(УзелСредний).подузел(Дерево)
|
|
|
```
|
|
|
|
|
|
-### 8.2 Операторы
|
|
|
+### 9.2 Операторы
|
|
|
|
|
|
Синтаксис выражений различает четыре вида операторов с разными приоритетами (порядком выполнения).
|
|
|
|
|
|
@@ -596,7 +596,7 @@ t(УзелСредний).подузел(Дерево)
|
|
|
|
|
|
Множество [m..n] обозначает [m, m + 1, ..., n-1, n], а если m>n, то пустое множество. Доступные операции перечислены в следующих таблицах. В некоторых случаях несколько разных операций обозначаются одним и тем же символом операции. В этих случаях фактическая операция определяется типом операндов.
|
|
|
|
|
|
-#### 8.2.1 Логические операции
|
|
|
+#### 9.2.1 Логические операции
|
|
|
|
|
|
| Символ | Результат |
|
|
|
| ------ | ------------------------ |
|
|
|
@@ -610,7 +610,7 @@ t(УзелСредний).подузел(Дерево)
|
|
|
> p и q // обозначает «если р, то q, иначе нет
|
|
|
> не P // означает "не p"
|
|
|
|
|
|
-#### 8.2.2 Арифметические операторы
|
|
|
+#### 9.2.2 Арифметические операторы
|
|
|
|
|
|
| Символ | Результат |
|
|
|
| ------ | --------- |
|
|
|
@@ -624,7 +624,7 @@ t(УзелСредний).подузел(Дерево)
|
|
|
- `-` обозначает инверсию знака;
|
|
|
- `+` обозначает оператор идентичности.
|
|
|
|
|
|
-#### 8.2.3 Отношения
|
|
|
+#### 9.2.3 Отношения
|
|
|
|
|
|
| Символ | Результат |
|
|
|
| ------ | ---------------- |
|
|
|
@@ -667,7 +667,7 @@ T есть УзелСредний (`бул`)
|
|
|
|
|
|
> Предписание = Оператор | Присвоение | ВызовПроцедур | Предписание_ЕСЛИ |Предписание_ВЫБОР | Предписание_ЦИКЛ.
|
|
|
|
|
|
-### 9.1 Предписание ПРИСВОЕНИЕ
|
|
|
+### 10.1 Предписание ПРИСВОЕНИЕ
|
|
|
|
|
|
Элементарное предписание `ПРИСВОЕНИЕ` служит для замены текущего значения объекта на новое значение, заданное выражением. Предписание `ПРИСВОЕНИЕ` записывается как «=» и произносится как «присвоить».
|
|
|
|
|
|
@@ -695,13 +695,13 @@ t.key = i
|
|
|
w[i+1].ch = "A"
|
|
|
```
|
|
|
|
|
|
-### 9.3 Последовательность предписаний
|
|
|
+### 10.3 Последовательность предписаний
|
|
|
|
|
|
Последовательности предписаний обозначают последовательность действий, заданную частями операторов, разделенными точкой с запятой.
|
|
|
|
|
|
> Последовательность_Предписаний = Предписание? ; Предписание..?;
|
|
|
|
|
|
-### 9.4 Предписание_ЕСЛИ
|
|
|
+### 10.4 Предписание_ЕСЛИ
|
|
|
|
|
|
Предписание `если` проверяет булево выражение. Если булево выражение положительное -- далее выполняется последовательность предписаний.
|
|
|
|
|
|
@@ -719,7 +719,7 @@ w[i+1].ch = "A"
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-### 9.5 Предписание_ВЫБОР
|
|
|
+### 10.5 Предписание_ВЫБОР
|
|
|
|
|
|
Составное предписание `выбор` определяет выбор и выполнение последовательности предписаний в соответствии со значением выражения. Сначала вычисляется выражение `выбор`, затем выполняется последовательность предписаний, чей список меток содержит полученное значение. Если выражение `выбор` имеет тип `целое` или `байт`, все метки должны быть целыми или байтами, соответственно.
|
|
|
|
|
|
@@ -778,7 +778,7 @@ w[i+1].ch = "A"
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-### 9.7 Предписание цикл
|
|
|
+### 10.7 Предписание цикл
|
|
|
|
|
|
Составное предписание `цикл` указывает повторное выполнение последовательности выражений бесконечное количество раз. Для досрочного начала очередной операции используется ключевой символ `дальше`. Для прерывания итераций используется ключевой символ `стоп`.
|
|
|
|
|
|
@@ -811,7 +811,7 @@ w[i+1].ch = "A"
|
|
|
ПоследОбъявлений = ОбъявлениеКонстант..? ; ОбъявлениеТипов..? ; ОбъявлениеОбъектов?;
|
|
|
```
|
|
|
|
|
|
-### 10.1 Формальные параметры
|
|
|
+### 11.1 Формальные параметры
|
|
|
|
|
|
Формальные параметры (или просто параметры) -- это имена, которые обозначают фактические параметры (аргументы), указанные в вызове функции. Соответствие между аргументами и параметрами устанавливается при вызове функции. Объект соответствует фактическому параметру, который является объектом внутри функции. Значение соответствует фактическому параметру, который является выражением, и он обозначает его значение, которое невозможно изменить при передаче. Однако, если значение имеет базовый тип, он представляет собой локальный объект, которому первоначально присваивается значение фактического выражения.
|
|
|
|
|
|
@@ -880,7 +880,7 @@ w[i+1].ch = "A"
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-### 10.2. Встроенные функции
|
|
|
+### 11.2. Встроенные функции
|
|
|
|
|
|
В следующей таблице перечислены встроенные функции. Некоторые из них являются общими функциями, то есть они применяются к нескольким типам операндов. `v` обозначает переменную, `x` и `n` для выражений, `T` - тип.
|
|
|
|
|
|
@@ -994,7 +994,7 @@ w[i+1].ch = "A"
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-### 11.1 Модуль СИСТЕМА
|
|
|
+### 12.1 Модуль СИСТЕМА
|
|
|
|
|
|
Необязательный модуль `СИСТЕМА` содержит определения, необходимые для программирования опасных операций, ссылающихся непосредственно на ресурсы, специфичные для данной аппаратуры.
|
|
|
|