Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Семейство метасинтаксических обозначений
Family of metasyntax notations
В информатике расширенная форма Бэкуса — Наура (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 используют несколько иные синтаксические соглашения.
In computer science, extended Backus–Naur form (EBNF) is a family of metasyntax notations, any of which can be used to express a context free grammar. EBNF is used to make a formal description of a formal language such as a computer programming language. They are extensions of the basic Backus–Naur form (BNF) metasyntax notation. The earliest EBNF was developed by Niklaus Wirth, incorporating some of the concepts (with a different syntax and notation) from Wirth syntax notation. Today, many variants of EBNF are in use. The International Organization for Standardization adopted an EBNF Standard, ISO/IEC 14977, in 1996. According to Zaytsev, however, this standard "only ended up adding yet another three dialects to the chaos" and, after noting its lack of success, also notes that the ISO EBNF is not even used in all ISO standards. Wheeler argues against using the ISO standard when using an EBNF and recommends considering alternative EBNF notations such as the one from the W3C Extensible Markup Language (XML) 1.0 (Fifth Edition). This article uses EBNF as specified by the ISO for examples applying to all EBNFs. Other EBNF variants use somewhat different syntactic conventions.
Преимущества перед BNF
Любую грамматику, определенную в EBNF, также можно представить в BNF, хотя представления в последней, как правило, более объемные. Например, опции и повторения нельзя непосредственно выразить в BNF и требуется использование промежуточного правила или альтернативной продукции, определенной как пустая строка или необязательная продукция для опции, либо рекурсивное повторение самой себя для повторения. Те же конструкции могут быть использованы и в EBNF. BNF использует символы (<, >, |, ::=) для своей структуры, но не включает кавычки вокруг терминальных строк. Это предотвращает использование этих символов в самих языках и требует специального символа для обозначения пустой строки. В EBNF терминалы строго заключаются в кавычки (" " или ' '). Угловые скобки ("< >") для нетерминалов могут быть опущены. Синтаксис BNF может представить правило только в одной строке, в то время как в EBNF символ точки с запятой “;” обозначает конец правила. Кроме того, EBNF включает механизмы для расширения возможностей, определяя количество повторений, исключая альтернативы, добавляя комментарии и т.д.
Any grammar defined in EBNF can also be represented in BNF, though representations in the latter are generally lengthier. E. g., options and repetitions cannot be directly expressed in BNF and require the use of an intermediate rule or alternative production defined to be either nothing or the optional production for option, or either the repeated production of itself, recursively, for repetition. The same constructs can still be used in EBNF. The BNF uses the symbols (<, >, |, ::=) for itself, but does not include quotes around terminal strings. This prevents these characters from being used in the languages, and requires a special symbol for the empty string. In EBNF, terminals are strictly enclosed within quotation marks (" " or ' '). The angle brackets ("< >") for nonterminals can be omitted. BNF syntax can only represent a rule in one line, whereas in EBNF a terminating character, the semicolon character “;” marks the end of a rule. Furthermore, EBNF includes mechanisms for enhancements, defining the number of repetitions, excluding alternatives, comments, etc.
Связанная работа
W3C публикует нотацию EBNF. W3C использовал другую EBNF для спецификации синтаксиса XML. Британский институт стандартов опубликовал стандарт для EBNF: BS 6154 в 1981 году. IETF использует расширенную БНФ (ABNF), определенную в .
The W3C publishes an EBNF notation. The W3C used a different EBNF to specify the XML syntax. The British Standards Institution published a standard for an EBNF: BS 6154 in 1981. The IETF uses augmented BNF (ABNF), specified in .