Справочное руководство по языку Ада-83


Контекст разрешения совмещения


Совмещение определено для программ, литералов перечисления, символов операций и одиночных входов, а также для тех операций, которые присущи обычным базовым операциям, например присваивание, проверка принадлежности, генератор, литерал

null,

агрегаты и строковые литералы.

Для совмещенных понятий разрешение совмещения определяет фактический смысл, который имеет вхождение идентификатора, когда в соответствии с правилами видимости выясняется, что в месте этого вхождения приемлема более чем одна трактовка идентификатора;

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

В таком месте рассматриваются все видимые описания. Вхождение правильно только тогда, когда есть точно одна интерпретация самого вложенного полного контекста.

Полный контекст —

это описание, оператор, спецификатор представления.

При рассмотрении возможных интерпретаций полного контекста учитываются только те правила, которые касаются синтаксиса, области действия и видимости, а также те, которые даны ниже. Учитываются:

а) любое правило, которое требует, чтобы имя или выражение имели определенный тип или такой же тип, как другое имя или выражение;

б) любое правило, которое требует, чтобы тип имени или выражения был типом определенного класса; аналогично любое правило, которое требует, чтобы определенный тип был дискретным, целым, вещественным, универсальным, символьным, логическим или нелимитируемым типом;

в) любое правило, которое требует, чтобы префикс соответствовал определенному типу;

г) любое правило, которое задает определенный тип в качестве типа результата базовой операции, и любое правило, которое устанавливает, что это тип определенного класса;

д) правила, которые требуют, чтобы тип агрегата или строкового литерала был определен исключительно охватывающим полным контекстом (см. 4.3 и 4.2). Аналогично правила, которые требуют, чтобы тип префикса атрибута, тип выражения оператора выбора или тип операнда преобразования типа были определены независимо от контекста (см. 4.1.4, 4.6, 5.4 и 6.4.1);




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