ГОСТ Р ИСО 10303-21—2022
Приложение В
(обязательное)
Соглашения по записи в синтаксической нотации Вирта
Синтаксис структуры обмена определен в синтаксической нотации Вирта (WSN), опубликованной Никлаусом
Виртом в "Communications of the ACM. 20:11 (Nov 77). 822-823". WSN состоит из набора выводов или правил под
становки. Элемент в левой части вывода (т. е. перед знаком равенства) может быть использован для представ
ления появления образца в правой части. Элементарные символы, которые появляются только в правой части
таких выводов, называются терминальными. Элементы, которые появляются в левой части выводов, называются
нетерминальными.
Соглашения по записи даны ниже. Таблица В.1 представляет самоопределенную WSN:
- строка прописных букв является элементом языка: строка является именем элемента (для удобства строч
ные буквы используются для неопределенных идентификаторов и комментариев);
- любая строка, заключенная в кавычки, точно определяет содержимое внутри кавычек. Единственным ис
ключением из этого правила является знак кавычек внутри текста. Чтобы его реализовать, знак кавычек сразу же
повторяют один раз. Последовательность """" интерпретируется как ", а последовательность "АВ""С" — как АВ"С;
- знакравенства "=" означает вывод. Определено, что элемент слева должен быть комбинацией элементов
справа. Любые пробелы, появляющиеся между элементами вывода, не являются значащими, если они появляются
не внутри литерала. Вывод завершается точкой’,
- фигурные скобки"{}" означают отсутствие или множество повторений;
- квадратные скобки"[ ]" означают необязательный параметр;
- вертикальная линия "|" означает логическое ИЛИ;
- скобки "(" ")" показывают приоритет операций. В частности там, где скобки включают в себя элементы,
разделенные вертикальными линиями, один из элементов должен быть выбран в сочетании с любой другой опе
рацией.
Пример
—
Последовательность ”A(B\C\D)’’ эквивалентна ”AB\AC\AD”.
Таблица В.1 — Самоопределенная синтаксическая нотация Вирта (WSN)
SYNTAX
= { PRODUCTION }.
PRODUCTION
= IDENTIFIER "=" EXPRESSION
EXPRESSION= TERM { T TERM }.
TERM= FACTOR { FACTOR }.
FACTOR = IDENTIFIER
| LITERAL
| T EXPRESSION T
| "(" EXPRESSION ")"
| "{" EXPRESSION "}".
IDENTIFIER
= letter { letter}.
LITERAL
’
= "....character {character}.......
.
57