Расширенная форма Бэкуса-Наура
При определении синтаксиса языков Pascal и Modula-2 Вирт использовал расширенную форму Бэкуса-Наура (EBNF):
- Нетерминалы записываются как отдельные слова
- Терминалы записываются в кавычках, например, " BEGIN "
- Вертикальная черта (|), как и прежде, используется для определения альтернатив
- Круглые скобки используются для группировки
- Квадратные скобки используются для определения возможного вхождения символа или группы символов
- Фигурные скобки используются для определения возможного повторения символа или группы символов
- Символ равенства используется вместо символа ::=
- Символ точка используется для обозначения конца правила
- Комментарии заключаются между символами (* … *)
- эквивалентно [ ]
Пример.
Integer = Sign UnsignedInteger. UnsignedInteger = digit {digit}. Sign = ["+"|"-"]. digit = "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9".
В 1981 году Британский институт стандартов (British Standards Institute) опубликовал стандарт EBNF. BSI стандарт получился более наглядным, чем расширенная форма Бэкуса-Наура, предложенная Виртом.
- Элементы правил разделяются запятыми
- Правила заканчиваются точкой с запятой
- Пробелы не являются значащими
Пример.
Constant Declaration = "CONST", Constant Identifier , "=", Constant Expression, ";", {Constant Identifier, "=", Constant Expression, ";"}; Constant Identifier = identifier; Constant Expression = Expression;
Содержание раздела