Commit 65bfe043 authored by Денис Будяк's avatar Денис Будяк
Browse files

CHAR теперь везде (а не кое-где) называется знаком, а не символом

parent 2d8d9f65
......@@ -23,11 +23,11 @@
### 2 Словарь и представление
Представление терминальных символов по соглашениям определяется с помощью набора ASCII. Символы - это идентификаторы, числа, строки, операторы и разделители. Применяется следующее правило: пробелы и разрывы строк не должны встречаться в символах (за исключением комментариев и строковых литералов). Кроме того, что они служат разделителями соседних символов, они игнорируются. Прописные и строчные буквы считаются различными.
Представление терминальных символов по соглашениям определяется с помощью набора ASCII, расширенного русской кириллицей. Символы - это идентификаторы, числа, строки, операторы и разделители. Применяется следующее правило: пробелы, знаки табуляции и разрывы строк не должны встречаться в символах (за исключением комментариев и строковых литералов). Кроме того, что пробелы, знаки табуляции и переносы строк служат разделителями соседних символов, они игнорируются. Прописные и строчные буквы считаются различными.
#### 2.1 Идентификаторы
Идентификаторы - это последовательность символов, цифр и специальных символов. Первый символ должен быть буквой:
Идентификаторы - это последовательность букв, цифр и специальных знаков. Первый знак должен быть буквой:
```
Идентификатор = Буква {Буква | Цифра | ’_’ }.
Буква = ’A’ | ’B’ | .. |’Z’ | ’a’ | ’b’ | .. | ’z’ .
......@@ -41,6 +41,7 @@
KernelLog
Abc013
Trace_me
Привет
```
#### 2.2 Числовые константы
......@@ -83,7 +84,7 @@ i = 3.82E+20 ;
Для всех чисел знак одинарной кавычки `’` может использоваться как разделитель. Между ними может быть не более одной кавычки `’`. Фиксированное расстояние между разделителями не обязательно должно соблюдаться. Разделитель игнорируется компилятором.
Использование масштабирующего символа `D` не рекомендуется. В оригинальной версии Оберона можно было указать константы типов REAL и LONGREAL. Это считается ненужным, так как свертка констант теперь всегда выполняется с самой высокой доступной точностью. При необходимости константа может быть преобразована в FLOAT32 явно.
Использование масштабирующего знака `D` не рекомендуется. В оригинальной версии Оберона можно было указать константы типов REAL и LONGREAL. Это считается ненужным, так как свертка констант теперь всегда выполняется с самой высокой доступной точностью. При необходимости константа может быть преобразована в FLOAT32 явно.
#### 2.3 Константы типа знак
......@@ -169,7 +170,7 @@ D = [REAL(2.0), 4, 10]; (* ARRAY [3] OF REAL *)
#### 2.7 Ключевые слова, операции, разделители
Операторы и разделители - это специальные символы, строки или зарезервированные слова, перечисленные ниже. Зарезервированные слова не могут использоваться в качестве идентификаторов. На следующем рисунке перечислены все зарезервированные ключевые слова и символы операций, которые непосредственно распознаются сканером.
Операторы и разделители - это специальные знаки, строки или зарезервированные слова, перечисленные ниже. Зарезервированные слова не могут использоваться в качестве идентификаторов. На следующем рисунке перечислены все зарезервированные ключевые слова и знаки операций, которые непосредственно распознаются сканером.
```
AWAIT BEGIN BY CONST CASE CELL CELLNET CODE DO DIV END ENUM ELSE ELSIF EXIT EXTERN FALSE FOR FINALLY IF IGNORE IMAG IN IS IMPORT LOOP MODULE MOD NIL OF OR OUT OPERATOR PORCEDURE PORT REPEAT RETURN SELF NEW RESULT THEN TRUE TO TYPE UNTIL VAR WHILE WITH ARRAY OBJECT POINTER RECORD ADDRESS SIZE ALIAS
......@@ -202,7 +203,7 @@ SYSTEM.BYTE SYSTEM.GET SYSTEM.PUT SYSTEM.PUT8 SYSTEM.PUT16 SYSTEM.PUT32 SYSTEM.P
#### 2.8 Комментарии
Комментарии могут быть вставлены между любыми двумя символами программы. Они представляют собой произвольные последовательности символов, начинающихся с `(*` и заканчивающихся `*)`, и игнорируются программой. Комментарии могут быть вложенными.
Комментарии могут быть вставлены между любыми двумя символами программы. Они представляют собой произвольные последовательности знаков, начинающихся с `(*` и заканчивающихся `*)`, и игнорируются программой. Комментарии могут быть вложенными.
##### 2.8.1 Примеры
......@@ -223,14 +224,14 @@ END Тест.
#### 2.9 Условная компиляция
Программа может содержать произвольные блоки кода, которые компилируются условно. Такие блоки представляются символом `#` в начале строки, за которым следует либо `if`, либо `elsif`, либо `else` в соответствии со следующим синтаксисом:
Программа может содержать произвольные блоки кода, которые компилируются условно. Такие блоки представляются знаком `#` в начале строки, за которым следует либо `if`, либо `elsif`, либо `else` в соответствии со следующим синтаксисом:
```
Block = ’#’ ’if’ Выражение ’then’ Block
{ ’#’ ’elsif’ Выражение ’then’ Block }
[ ’#’ ’else’ Block]
’#’ ’end’
| любой символ до следующего символа новой строки
| любой знак до следующего знака новой строки
```
Логическое выражение может состоять из идентификаторов и логических операций. Любой идентификатор в таких выражениях называется определением и оценивается либо как `TRUE`, либо как `FALSE` в зависимости от того, было ли определение предоставлено текущему вызову компилятора. Код внутри условного блока становится частью скомпилированной программы, только если выражение принимает значение `TRUE` и полностью игнорируется в противном случае. Условные блоки могут быть вложенными, но должны быть завершены с помощью `#end`.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment