Справочник по Ada 95
8.2 Область действия объявлений
Для каждого объявления правила языка определяют определенный фрагмент текста программы, называемый областью действия объявления. Область действия объявления также называется областью действия любого вида или сущности, объявленной этим объявлением. В пределах области действия сущности и только там существуют места, где допустимо обращение к объявленной сущности. Эти места определяются правилами видимости и перегрузки.
Статическая семантика
Непосредственная область действия объявления — это часть области объявления, непосредственно окружающая объявление. Непосредственная область действия начинается в начале объявления, за исключением случая объявляемого перегружаемого объявления, в этом случае непосредственная область действия начинается сразу после места, где определяется профиль вызываемой сущности (что находится в конце _спецификации для вызываемой сущности или в конце generic_instantiation, если это экземпляр). Непосредственная область действия простирается до конца области объявления со следующими исключениями:
- Непосредственная область действия library_item включает только его семантические зависимости.
- Непосредственная область действия объявления в частной части библиотечного модуля не включает видимую часть любого публичного потомка этого библиотечного модуля.
Видимая часть (вида) сущности — это часть текста его объявления, содержащая объявления, видимые извне. Частная часть (вида) сущности, имеющей видимую часть, содержит все объявления внутри объявления (вида) сущности, кроме тех, что в видимой части; они не видны извне. Видимая и частная части определены только для этих видов сущностей: вызываемые сущности, другие программные модули и составные типы.
- Видимая часть вида вызываемой сущности — это ее профиль.
- Видимая часть составного типа, отличного от типа задачи или защищенного типа, состоит из объявлений всех компонентов, объявленных (явным или неявным образом) в type_declaration.
- Видимая часть обобщенного модуля включает generic_formal_part. Для обобщенного пакета он также включает первый список basic_declarative_itemов package_specification. Для обобщенной подпрограммы он также включает профиль.
- Видимая часть пакета, модуля задачи или защищенного модуля состоит из объявлений в объявлении программного модуля, отличных от тех, что следуют за ключевым словом private, если таковые имеются; см. 7.1 и 12.7 для пакетов, 9.1 для модулей задач и 9.4 для защищенных модулей.
Область действия объявления всегда содержит непосредственную область действия объявления. Кроме того, для данного объявления, которое находится непосредственно внутри видимой части внешнего объявления или является публичным потомком внешнего объявления, область действия данного объявления простирается до конца области действия внешнего объявления, за исключением того, что область действия library_item включает только его семантические зависимости.
Непосредственная область действия объявления также является непосредственной областью действия сущности или вида, объявленных этим объявлением. Аналогично, область действия объявления также является областью действия сущности или вида, объявленных этим объявлением.
ПРИМЕЧАНИЯ
4 Существуют обозначения для обозначения видимых объявлений, которые не видны непосредственно. Например, parameter_specificationы находятся в видимой части subprogram_declaration, чтобы их можно было использовать в вызовах с именованной нотацией, появляющихся за пределами вызываемой подпрограммы. Еще один пример: объявления видимой части пакета могут обозначаться расширенными именами, появляющимися за пределами пакета, и могут быть сделаны непосредственно видимыми с помощью use_clause.