Статус документа
Статус документа

ГОСТ Р МЭК 61131-3-2016 Контроллеры программируемые. Часть 3. Языки программирования

Приложение A
(обязательное)

Формальная спецификация элементов языка

Синтаксис текстовых языков определен в варианте "расширенной БНФ" (Бэкус-Науровой формы).

Синтаксис этого варианта РБНФ следующий:

Для целей настоящего приложения А, терминальные текстовые символы состоят из соответствующей строки символов, заключенной в парные одиночные кавычки. Например, терминальный символ, представляемый строкой символов ABC, представлен посредством .

Нетерминальные текстовые символы должны быть представлены строками букв нижнего регистра, числами и символом подчеркивания , начиная с буквы верхнего регистра.

Продукционные правила

Правила вывода для текстовых языков имеют форму

non_terminal_symbol : extended_structure;

Данное правило можно прочитать как: "non_terminal_symbol может включать extended_structure".

Расширенные структуры можно конструировать в соответствии со следующими правилами:

любой терминальный символ - расширенная структура;

любой нетерминальный символ - расширенная структура.

Если S - расширенная структура, то следующие выражения также являются расширенными структурами:

(S) - означает собственно S;

(S)* - замыкание, означающее нуль или большее число конкатенаций S;

(S)+ - замыкание, означающее одно или большее число сцеплений S;

(S)? - вариант, означающий нуль или одно появление S.

Если S1 и S2 - это расширенные структуры, тогда следующие выражения являются расширенными структурами:

S1 | S2 - изменение, означающее выбор S1 или S2;

S1 S2 - сцепление, означающее S1, за которым следует S2;

Сцепление предшествует изменению, то есть

S1 | S2 S3 - эквивалентно S1 | ( S2 S3 ), S1 S2 | S3 - эквивалентно ( S1 S2 ) | S3.

Если S - это расширенная структура, которая обозначает одиночный символ или изменение одиночных символов, тогда следующее также является расширенной структурой:

~(S) - отрицание, означающее любой одиночный символ, который не находится в S. Отрицание предшествует замыканию или опции, то есть

~(S)* - эквивалентно (~(S))*.

Следующие символы используются для обозначения определенных символов или классов символов:

. - любой одиночный символ;

- символ одиночной кавычки;

\n - новая строка;