Множество всех синтаксически правильных программ языка 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
Алфавит и словарь