Расширенная форма Бэкуса – Наура


В информатике расширенная форма Бэкуса-Наура ( EBNF ) представляет собой семейство метасинтаксических обозначений, любое из которых может использоваться для выражения контекстно-свободной грамматики . EBNF используется для формального описания формального языка , такого как язык программирования . Они являются расширениями базовой метасинтаксической нотации формы Бэкуса-Наура (BNF).

Самая ранняя EBNF была разработана Никлаусом Виртом , включающим некоторые концепции (с другим синтаксисом и нотацией) из синтаксической нотации Вирта . Однако используется множество вариантов EBNF. [1] Международная организация по стандартизации приняла стандарт EBNF ( ISO/IEC 14977 ) в 1996 году. Однако, по словам Зайцева, этот стандарт «всего лишь добавил к хаосу еще три диалекта» и, отметив отсутствие успеха, также отмечает, что ISO EBNF даже не используется во всех стандартах ISO. Уилер возражает против использования стандарта ISO при использовании EBNF и рекомендует рассмотреть альтернативные обозначения EBNF, например, из W3C Extensible Markup Language (XML) 1.0 (пятое издание).

В этой статье используется EBNF, как указано в ISO, для примеров, применимых ко всем EBNF. Другие варианты EBNF используют несколько иные синтаксические соглашения.

EBNF — это код , выражающий синтаксис формального языка. [2] EBNF состоит из терминальных символов и нетерминальных производственных правил, которые являются ограничениями, определяющими, как терминальные символы могут быть объединены в допустимую последовательность. Примеры терминальных символов включают буквенно-цифровые символы , знаки препинания и пробельные символы .

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

Это производственное правило определяет неконечную цифру , которая находится в левой части присваивания. Вертикальная черта представляет собой альтернативу, а терминальные символы заключены в кавычки, за которыми следует точка с запятой в качестве завершающего символа. Следовательно, цифра — это 0 или цифра, за исключением нуля , которая может быть 1 , 2 или 3 и так далее до 9 .