Расширенная форма Бэкуса-Наура
При определении синтаксиса языков 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;
Содержание раздела