Формальная спецификация элементов языка
Синтаксис текстовых языков определен в варианте "расширенной БНФ" (Бэкус-Науровой формы).
Синтаксис этого варианта РБНФ следующий:
Для целей настоящего приложения А, терминальные текстовые символы состоят из соответствующей строки символов, заключенной в парные одиночные кавычки. Например, терминальный символ, представляемый строкой символов 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 - новая строка;