Spec-Zone.ru › Ada 2012
Справочник по Ada 2012

8.2 Область действия объявлений

Для каждого объявления языковые правила определяют определённую часть текста программы, называемую областью действия объявления. Область действия объявления также называется областью действия любого вида или сущности, объявленной этим объявлением. В пределах области действия сущности, и только там, существуют места, где разрешено ссылаться на объявленную сущность. Эти места определяются правилами видимости и перегрузки.

Статическая семантика

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


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API