Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билет1.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
117.57 Кб
Скачать

Применение

Используется для описания синтаксиса языков программирования, данных, протоколов (например, в документах RFC) и т. д. (причем как грамматики, так и регулярной лексики, поскольку регулярные грамматики являются подмножеством контекстно-свободных).

Описание

Терминология этой статьи может расходиться с традиционной.

БНФ-конструкция определяет конечное число символов (нетерминалов). Кроме того, она определяет правила замены символа на какую-то последовательность букв (терминалов) и символов. Процесс получения цепочки букв, можно определить поэтапно: изначально имеется один символ (символы обычно заключаются в угловые скобки, а их название не несёт никакой информации). Затем этот символ заменяется на некоторую последовательность букв и символов, согласно одному из правил. Затем процесс повторяется (на каждом шаге один из символов заменяется на последовательность, согласно правилу). В конце концов, получается цепочка, состоящая из букв и не содержащая символов. Это означает, что полученная цепочка может быть выведена из начального символа.

БНФ-конструкция состоит из нескольких предложений вида

<определяемый символ> ::= <посл.1> | <посл.2> | . . . | <посл.n>

, описывающих правила. Такое правило означает, что символ <определяемый символ> может заменяться на одну из последовательностей посл.1. Знак определения обычно выглядит как ::= или →, но возможны и другие варианты.

Некоторые специальные символы, как например <пусто>, означают какую-то последовательность (в данном случае — пустую).

Примеры конструкций

  • Вот пример БНФ-конструкции, описывающей правильные скобочные последовательности:

<правпосл>::=<пусто> | (<правпосл>) | <правпосл><правпосл>

Это простая конструкция, состоящая всего из одного правила, утверждающего, что символ <правпосл> может замениться либо на пустое место, либо на этот же символ <правпосл>, заключённый в скобки, либо на два символа <правпосл> идущих подряд.

Вот как получить с помощью этой конструкции цепочку ((())())() (ниже перечисляются все этапы, символы <пусто> опускаются):

<правпосл>

<правпосл><правпосл>

(<правпосл>)<правпосл>

(<правпосл>)(<правпосл>)

(<правпосл>)(<пусто>)

(<правпосл><правпосл>)()

((<правпосл>)<правпосл>)()

((<правпосл>)(<правпосл>))()

((<правпосл>)(<пусто>))()

(((<правпосл>))())()

(((<пусто>))())()

((())())()

Расширенная форма Бэкуса — Наура (расширенная Бэкус — Наурова форма (РБНФ)) (англ. Extended Backus–Naur Form (EBNF)) — формальная система определения синтаксиса, в которой одни синтаксические категории последовательно определяются через другие. Используется для описания контекстно-свободных формальных грамматик. Предложена Никлаусом Виртом. Является расширенной переработкой форм Бэкуса-Наура, отличается от БНФ более «ёмкими» конструкциями, позволяющими при той же выразительной способности упростить и сократить в объёме описание.

Содержание

  • 1 Описание

    • 1.1 Терминалы и нетерминалы

    • 1.2 Правила

    • 1.3 Выражения

    • 1.4 Варианты синтаксиса

  • 2 Примеры конструкций

    • 2.1 Формальное самоопределение РБНФ

    • 2.2 Число и идентификатор в РБНФ

  • 3 РБНФ и другие способы описания формальных грамматик

    • 3.1 РБНФ и БНФ

    • 3.2 РБНФ и синтаксические диаграммы

  • 4 Применение, достоинства и недостатки РБНФ

  • 5 Ссылки

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]