Введение

Семейство метасинтаксических обозначений

В информатике расширенная форма Бэкуса — Наура (EBNF) представляет собой семейство метасинтаксических обозначений, любое из которых может быть использовано для выражения контекстно-свободной грамматики. EBNF используется для формального описания формального языка, такого как язык программирования. Они являются расширениями базового метасинтаксического обозначения формы Бэкуса — Наура (BNF). Самая ранняя EBNF была разработана Никлаусом Виртом, включив в неё некоторые концепции (с другим синтаксисом и обозначением) из обозначения синтаксиса Вирта. Сегодня используется множество вариантов EBNF. Международная организация по стандартизации приняла стандарт EBNF, ISO/IEC 14977, в 1996 году. Однако, по мнению Зайцева, этот стандарт "лишь добавил ещё три диалекта к существующему разнообразию" и, отметив его неудачу, также указывает на то, что ISO EBNF даже не используется во всех стандартах ISO. Уилер возражает против использования стандарта ISO при работе с EBNF и рекомендует рассмотреть альтернативные обозначения EBNF, такие как обозначение, используемое в W3C Extensible Markup Language (XML) 1.0 (Пятое издание). В данной статье используется EBNF, определённая в ISO, для примеров, применимых ко всем вариантам EBNF. Другие варианты EBNF используют несколько иные синтаксические соглашения.

Преимущества перед BNF

Любую грамматику, определенную в EBNF, также можно представить в BNF, хотя представления в последней, как правило, более объемные. Например, опции и повторения нельзя непосредственно выразить в BNF и требуется использование промежуточного правила или альтернативной продукции, определенной как пустая строка или необязательная продукция для опции, либо рекурсивное повторение самой себя для повторения. Те же конструкции могут быть использованы и в EBNF. BNF использует символы (<, >, |, ::=) для своей структуры, но не включает кавычки вокруг терминальных строк. Это предотвращает использование этих символов в самих языках и требует специального символа для обозначения пустой строки. В EBNF терминалы строго заключаются в кавычки (" " или ' '). Угловые скобки ("< >") для нетерминалов могут быть опущены. Синтаксис BNF может представить правило только в одной строке, в то время как в EBNF символ точки с запятой “;” обозначает конец правила. Кроме того, EBNF включает механизмы для расширения возможностей, определяя количество повторений, исключая альтернативы, добавляя комментарии и т.д.

Связанная работа

W3C публикует нотацию EBNF. W3C использовал другую EBNF для спецификации синтаксиса XML. Британский институт стандартов опубликовал стандарт для EBNF: BS 6154 в 1981 году. IETF использует расширенную БНФ (ABNF), определенную в .