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


Элементы программного модуля


Мы переходим к описанию синтаксиса элементов программного модуля, но, прежде всего, определим ещё одну категорию спецификаторов объявления.

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

::= ***** fctСпецификатор ::= inline ::= virtual

fctСпецификатор используется при объявлении и определении функций. Их назначение ещё будет обсуждаться в дальнейшем.

ЭлементПрограммногоМодуля ::= СписокИнструкцийПрепроцессора

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

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

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

::= *****

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

Объявление ::= ОбъявлениеФункции

::= ОпределениеФункции

::= *****

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

[СпецификацияИсключения];

ОпределениеФункции ::= [СписокСпецификаторовОбъявления] Описатель

[ctorИнициализатор] [СпецификацияИсключения] ТелоФункции

Описатель ::= ИмяОписатель

::= ptrОперация Описатель

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

ИмяОписатель ::= Имя

::= *****

ptrОперация ::= * [СписокCVОписателей] ::= & [СписокCVОписателей]

СписокCVОписателей ::= CVОписатель [СписокCVОписателей]

CVОписатель ::= const | volatile

ctorИнициализатор ::= *****

СпецификацияИсключения ::= *****

О последних двух нетерминалах позже. КонстантноеВыражение ::= УсловноеВыражение

Свойства константного выражения мы также обсудим позже.

УсловноеВыражение ::= *****

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

Следует обратить особое внимание на последнюю БНФ. В ней зафиксировано различие между двумя нетерминалами. Так что СписокОбъявленийПараметров - совсем не то, что СписокОбъявленийПарам. Здесь нет никаких опечаток или ошибок. Первый нетерминал по смыслу шире второго. Три точечки, заключённые в круглые скобочки (...) уже в определённом контексте можно рассматривать как СписокОбъявленийПараметров, но это никак не СписокОбъявленийПарам. Это как раз тот самый случай, когда к нетерминалам имеет смысл относится как к СИМВОЛАМ, а не как к последовательностям подчёркнутых слов.




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