C++.Бархатный путь


Элементы программного модуля - часть 2


СписокОбъявленийПарам ::= ОбъявлениеПараметра

::= [СписокОбъявленийПарам,] ОбъявлениеПараметра

ОбъявлениеПараметра ::= СписокСпецификаторовОбъявления Описатель

::= СписокСпецификаторовОбъявления

Описатель

Инициализатор

::= СписокСпецификаторовОбъявления

[АбстрактныйОписатель] [Инициализатор]

АбстрактныйОписатель ::= ptrОперация [АбстрактныйОписатель] ::= [АбстрактныйОписатель] (СписокОбъявленийПараметров) [СписокCVОписателей] ::= [АбстрактныйОписатель] [[КонстантноеВыражение]] ::= (АбстрактныйОписатель)

БНФ, раскрывающая смысл нетерминала АбстрактныйОписатель, также проста, как и все прочие БНФ. Достаточно беглого взгляда, чтобы понять, что в роли этого самого абстрактного описателя могут выступать операции *, &, даже пара символов [], между которыми может располагаться константное выражение. Абстрактный описатель можно также поместить в круглые скобки.

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

ТелоФункции ::= СоставнойОператор

СоставнойОператор ::= {[СписокОператоров]}

Фигурные скобочки - характерный признак составного оператора.

СписокОператоров ::= Оператор

::= СписокОператоров Оператор

Оператор ::= ОператорОбъявления

::= *****

СписокИнструкцийПрепроцессора ::= [СписокИнструкцийПрепроцессора] ИнструкцияПрепроцессора

ИнструкцияПрепроцессора ::= # ::= Макроопределение

::= ФункциональноеМакроопределение

::= *****

Макроопределение ::= #define Идентификатор СтрокаЛексем

ФункциональноеМакроопределение ::= #define Идентификатор (СписокИдентификаторов) СтрокаЛексем

СписокИдентификаторов ::= Идентификатор ::= СписокИдентификаторов, Идентификатор

СтрокаЛексем ::= Лексема ::= СтрокаЛексем Лексема

Составной оператор также называют блоком операторов (или просто блоком).

Несмотря на значительное количество пропусков в приведённых выше БНФ, содержащейся в них информации о синтаксисе программного модуля вполне достаточно для реконструкции его общей структуры.

Сейчас мы рассмотрим структуру модуля. На содержательную часть этой "программы" можно не обращать никакого внимания. Сейчас важен лишь синтаксис.




Начало  Назад  Вперед



Книжный магазин