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


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


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

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

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

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

Описатель

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

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

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

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

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

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

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

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

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

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

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

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

::= *****

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

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

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

::= *****

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

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

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

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

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

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

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




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