|
|
@@ -15,7 +15,7 @@
|
|
|
- [Оглавление](#оглавление)
|
|
|
- [0. Введение](#0-введение)
|
|
|
- [1. Синтаксис](#1-синтаксис)
|
|
|
- - [2. Словарь](#2-словарь)
|
|
|
+ - [2. Синтез сущностей](#2-синтез-сущностей)
|
|
|
- [3. Ключевые символы](#3-ключевые-символы)
|
|
|
- [4. Объявления имён и область видимости](#4-объявления-имён-и-область-видимости)
|
|
|
- [Ссылки](#ссылки)
|
|
|
@@ -37,7 +37,7 @@
|
|
|
|
|
|
`Программа` включает как минимум один *модуль*. В `программе` как правило `модулей` как правило больше одного, количество модулей в программе не ограничено. Каждый модуль должен обладать правильной структурой:
|
|
|
|
|
|
-```go
|
|
|
+```bash
|
|
|
МОДУЛЬ Старт;
|
|
|
|
|
|
КОНЕЦ Старт.
|
|
|
@@ -54,21 +54,15 @@
|
|
|
|
|
|
Синтаксические сущности (`символы`) обозначаются русскими словами (английскими эквивалентами), выражающими их функциональное назначение. `Символы` могут быть на любом языке, ограничений нет. `Символы` словаря языка программирования обозначаются литеральными строками, заключенными в кавычки или литерами.
|
|
|
|
|
|
-## 2. Словарь
|
|
|
+## 2. Синтез сущностей
|
|
|
|
|
|
В группу `литеры` входят несколько классов:
|
|
|
|
|
|
- `буква`;
|
|
|
- `цифра`;
|
|
|
|
|
|
-
|
|
|
-`Разделитель` включает в себя:
|
|
|
-
|
|
|
-- `пробел`;
|
|
|
-- `перенос строки`.
|
|
|
-
|
|
|
Для составления `символов` предусматривается использование следующих правил. `Пробелы` и `переносы строк` не должны встречаться внутри `символов` (исключая `комментарии`). Они игнорируются, если они не существенны для отделения двух последовательных `символов`. Заглавные и строчные буквы считаются различными.
|
|
|
-`Имена` — последовательности `букв` и `цифр`. Первая `литера` *должна* быть `буквой`.
|
|
|
+`Имена` — тип сущностей в виде последовательности `букв` и `цифр`. Первая `литера` *должна* быть `буквой`.
|
|
|
|
|
|
> имя = буква {буква | цифра}.
|
|
|
|
|
|
@@ -103,7 +97,7 @@
|
|
|
`Строковые литералы` — последовательность `литер`, заключенных в двойные кавычки `"`. Ограничивающая кавычка не должна встречаться внутри литерала, но допускается:
|
|
|
|
|
|
- литерал из одной литеры может быть определён порядковым номером литеры в шестнадцатеричной нотации с последующей литерой "X";
|
|
|
-- внутри литерала может быть кавычка, непечатаемые символы экранированные даун-слэшем.
|
|
|
+- внутри литерала может быть кавычка с экраном, также непечатаемые символы должны быть экранированы даун-слэшем.
|
|
|
|
|
|
Число литер в литерале называется длиной строкового литерала.
|
|
|
|
|
|
@@ -130,10 +124,24 @@
|
|
|
|
|
|
Группа символов `комментарии` могут быть вставлены между любыми двумя `символами` в `программе`. Они являются произвольными последовательностями литер, которые открываются `/*`, `(*` и закрываются с помощью `*/`, `*)`. Однострочные `комментарии`` начинаются на `//` и действуют до конца строки. Комментарии *не влияют* на смысл программы. Они могут быть вложенными.
|
|
|
|
|
|
+`Разделитель` включает в себя:
|
|
|
+
|
|
|
+- `пробел`;
|
|
|
+- `перенос строки`.
|
|
|
+
|
|
|
Для более полного понимания зависимостей ниже приводится структурная схема:
|
|
|
|
|
|
```mermaid
|
|
|
flowchart TD
|
|
|
+ Программа
|
|
|
+ Модуль0
|
|
|
+ Модуль1
|
|
|
+ Сущность0
|
|
|
+ Сущность1
|
|
|
+ Пользовательские_символы
|
|
|
+ Ключевые_символы
|
|
|
+ Имя
|
|
|
+ Литеры
|
|
|
Программа --> Модуль0
|
|
|
Программа --> Модуль1
|
|
|
Модуль1 --> Сущность0
|
|
|
@@ -144,9 +152,10 @@ flowchart TD
|
|
|
Ключевые_символы --> Предписания
|
|
|
Ключевые_символы --> Операторы
|
|
|
Ключевые_символы --> Разделители
|
|
|
- Пользовательские_символы --> Литеры
|
|
|
- Встроенные_символы --> Литеры
|
|
|
- Предписания --> Литеры
|
|
|
+ Пользовательские_символы --> Имя
|
|
|
+ Встроенные_символы --> Имя
|
|
|
+ Предписания --> Имя
|
|
|
+ Имя --> Литеры
|
|
|
Операторы --> Литеры
|
|
|
Разделители --> Литеры
|
|
|
Литеры --> Буквы
|