nextupprevious
Next:1.2.5 Упражнения Up:1.2 Как можно определить Previous:1.2.3 Алфавит и словарь


1.2.4 Расширенный Бекуса-Наура формализм (РБНФ)


Множество всех синтаксически правильных программ языка Zonnon будет описываться в нотации так называемого Расширенного Бекуса-Наура Формализма (РБНФ), которая характеризуется следующими свойствами:

Конструкции РБНФ имеют следующий вид:

1.2.4.1. Последовательность

A = BC.

A состоит из B, за которым следует C

Примеры:

Sentence = Subject Predicate.
FileName = Name '.' Extension.
Name = FirstName Surname.

1.2.4.2. Повторение

A = {B}.

A состоит из нуля или более символов B.

Примеры:

File = {Record}.
Bill = {Item Price}.

1.2.4.3. Выбор

A = B | C.

A состоит из B или C.

Примеры:

Fork = Resource | Data.
Meal = Breakfast | Lunch | Dinner.

1.2.4.4. Факультативность

A = [B].

A состоит из B или из ничего.

Пример:

SelectedDrink = [ Tea | Coffee | Chocolate ]. // Возможно отсутствие!

1.2.4.5. Кавычки и прописные буквы

Текст в кавычках и текст из прописных букв изображает сам себя.

Примеры:

ImportDeclaration = import Import {"," Import}.
OwnSymbol = "me" | self.

1.2.4.5. Примеры

Например, если правила понятий ФРАЗА, ПОДЛЕЖАЩЕЕ, СКАЗУЕМОЕ и ДОПОЛНЕНИЕ имеют вид,
изображенный на рис.1.3, то понятие ФРАЗА порождает четыре цепочки:

"Маша ела кашу",
"Маша ела суп",
"Вера ела кашу",
"Вера ела суп",

а понятие СПИСОК (рис. 1.4) порождает бесконечное множество цепочек, среди которых "А", "А,А", "А,А,А" и
т.д.
 
 

ФРАЗА= ПОДЛЕЖАЩЕЕ Пробел СКАЗУЕМОЕ Пробел  ДОПОЛНЕНИЕ.
ПОДЛЕЖАЩЕЕ ="Маша"| "Вера".
СКАЗУЕМОЕ = ела.
ДОПОЛНЕНИЕ = кашу | суп.
Пробел= ' '.

Рис. 1.3. Примеры синтаксических правил
 

СПИСОК= "A"| ["," СПИСОК].

Рис. 1.4. Синтаксическая диаграмма понятия СПИСОК
 

В качестве еще одного примера можно определить синтаксис РБНФ с помощью самого РБНФ:

Syntax = {Production}.
Production = NonTerminalSymbol "=" Expression ".".
Expression = Term {"|" Term}.
Term = Factor {Factor}.
Factor = terminalSymbol | NonTerminalSymbol |
"(" Expression ")" | "[" Expression "]" | "{" Expression "}".

Next:1.2.5 Упражнения
Up:1.2 Как можно определить
Previous:1.2.3 Алфавит и словарь


© В.Н. Касьянов, Е.В.Касьянова, 2004