Explorar el Código

SVI Добавление нотации

SVI hace 2 años
padre
commit
a45b5b7763
Se han modificado 2 ficheros con 77 adiciones y 7 borrados
  1. 5 7
      README.md
  2. 72 0
      doc/notation.md

+ 5 - 7
README.md

@@ -2,9 +2,7 @@
 
 Сообщение о языке **Оберон-У** (*Оберон-Умелый, Oberon-Deft*)
 
-Язык является модификацией языка **Oberon-7**
-
-Ревизия: `v0.0.1 / 2023-07-27`
+Ревизия: `v0.0.2 / 2023-08-01`
 
 >     Все должно быть сделано максимально просто, но не примитивно.
 >     (А. Эйнштейн)
@@ -48,9 +46,9 @@
 
 ## 0. Введение
 
-Идея создания языка **Оберон-У** (*Оберон-Умелый*, *Oberon-Deft*; далее просто **Оберон**) родилась после переосмысления идей несоответствия современного ИТ и средств разработки. [Никлаус Вирт](https://ru.wikipedia.org/wiki/Вирт,_Никлаус) продвинулся в этом отношении дальше всех. И львиная доля идей в концепции **Оберон** является либо прямой трансляцией этих идей, либо непосредственно развивают их.
+Идея создания языка **Оберон-У** (далее просто **Оберон**) родилась после переосмысления идей несоответствия современного ИТ и средств разработки. [Никлаус Вирт](https://ru.wikipedia.org/wiki/Вирт,_Никлаус) продвинулся в этом отношении дальше всех. И львиная доля идей в концепции **Оберон** является либо трансляцией этих идей, либо творческой компиляции их.
 
-**Оберон** — язык программирования общего назначения, который является развитием **Модулы-2** и модификацией **Оберон-7**.
+**Оберон** — язык программирования общего назначения, который является развитием **Модулы-2** и модификацией **Оберон-7**.
 
 Данная вариация по большей части не имеет принципиально новых концепций, новые части отдельно описаны в соответствующих разделах. Концепция позволяет максимально изолировать высокоуровневые средства от низкоуровневых.
 
@@ -60,6 +58,8 @@
 
 ## 1. Синтаксис
 
+Для описания синтаксиса используется диалект расширенной формы Бэкуса—Наура (`РБНФ`) -- НШ [краткая справка](./doc/notation.md). Литера вопроса  `?`  означают необязательность записанного внутри них выражения, а двоеточие  `..` означают его повторение (возможно 0 раз).
+
 Законченный текст на языке программирования **Оберон** называется *программа*.
 
 `Программа` включает как минимум один *модуль*. В `программе` как правило `модулей` как правило больше одного, количество модулей в программе не ограничено. Каждый модуль должен обладать правильной структурой:
@@ -85,8 +85,6 @@
 
 Все эти `сущности` входят в группу `дерево символов` и состоят из `литер`. (Обратите внимание на разницу между `символами` и `литерами`). `Дерево символов` кроме самих `сущностей` содержит связи `сущностей` и все их необходимые `атрибуты`. `Листья` дерева не могут видеть другие `листья`, находящиеся ниже по веткам или в соседних ветках. Также есть ряд отдельных случаев описанных ниже.
 
-Для описания синтаксиса используются вариант расширенной формы Бэкуса — Наура (`РБНФ`). Литера вопроса  `?`  означают необязательность записанного внутри них выражения, а двоеточие  `..` означают его повторение (возможно 0 раз).
-
 Синтаксические сущности (`символы`) обозначаются русскими словами (английскими эквивалентами), выражающими их функциональное назначение. `Символы` могут быть на любом языке, ограничений нет. `Символы` словаря языка программирования обозначаются литеральными строками, заключенными в кавычки или литерами.
 
 ## 2. Синтез сущностей

+ 72 - 0
doc/notation.md

@@ -0,0 +1,72 @@
+# Нотация НШ
+
+Эта нотация является современным вариантом расширенной формы Бэкуса—Наура (`РБНФ`).
+
+Для описания грамматики языка используется несколько простых правил.
+
+## Определение продукции
+
+Ключевым понятием является `продукция`.
+
+При определении `продукции` слева устанавливается имя `продукции`, справа от знака `присвоить` описывается определение продукции. Предложение завершается `терминальный символом` -- `;`. Пример ниже:
+
+> Имя = Буква;
+
+## Необязательность символа в продукции
+
+При определении имени продукции символ (символы) с правой стороны могут быть необязательными.
+
+> Объект = Тип?;
+
+
+## Один или больше символов в продукции
+
+Если для определения имени продукции необходимо указать слева один или больше символов -- используется нотация имени символа с двоеточием после имени символа.
+
+> Объект = Тип..;
+
+## Символы на выбор в продукции
+
+Бывает, что продуция можэет быть одним из нескольких допустимых символов. Форма записи представлена ниже:
+
+> Объект = Тип1 | Тип2 | Тип3;
+
+## Комбинация обязательных и необязательных символов
+
+Для обозначения того, что для продукции используется один обязательный и список необязательные символы следует использовать литеру `,`. Форма записи:
+
+> Объект = Тип0, Типы..?
+
+## Комбинация символов и литер
+
+Для показа спосба комбинации продукции из символов и литер следует использовать литеру `+`:
+
+> ТипПоле = Тип0 + "." + Имя;
+
+## Комментарии
+
+В определение продукции можно добавить комментарий.
+
+> ТипПоле = Тип0 + "." + Имя;  // Определение поля в типе
+
+## Определение категории продукции
+
+К таким элементам, например, относятся кючевые символы
+
+```bash
+МОДУЛЬ = "МОДУЛЬ";
+ФУНКЦИЯ = "ФН";
+КлючевойСимвол = МОДУЛЬ | ФУНКЦИЯ;
+```
+
+## Обозначение области определения
+
+Бывает полезно в продукции показать границы определения, например:
+
+```bash
+Модуль = МОДУЛЬ Имя;
+Импорт?, Типы?, Переменные?, Функции?;
+{
+    Выражение..?
+}
+```