Н. Джехани - Язык Ада (1988) (1160771), страница 94
Текст из файла (страница 94)
° Оператор блока или оператор цикла. В каждом из перечисленных выше случаев говорят, что зона описания связана с соответствующим описанием или оператором. Описание находится непосредственно в зоне описания, если она является самой вложенной охватывающей данное описание без учета зоны описания (если она есть], связанной с самим описанием. Описание, которое находится непосредственно в зоне описания, является локальным в этой зоне. Говорят, что описания во внешних (охватывающих) зонах являются глобальным по отношению к внутренней (охватываемой) зоне описания. Локальные понятия — это те, кото. рые описаны непосредственно локальными описаниями; глобальные понятия — это те, которые описаны посредством глобальных описаний. Некоторые из упомянутых выше форм зон описания включают несколько разъединенных разделов (например, между описанием пакета и его телом могут быть помещены другие элементы описания).
Тем не менее каждая зона описания рассматривается как непрерывная часть текста программы (логически). Следовательно, если какое-либо правило определяет часть текста, расположенного от некоторой выделенной точки эоны описания до конца зоны, то эта часть является соответствующим подмножеством данной зоны описания (в нее не включаются, например, промежуточные элементы описания, расположенные между двумя разделами пакета). Примечание. Как определено в равд. 3.1, в термин описание включаются основные описания, неявные описания и описания, являющиеся разделом основных описаний, например спецификации дискриминантов и параметров. Из определения зоны описания следует, что спецификация дискриминанта находится непосредственно в зоне, связанной с охватывающим описанием именуемого типа.
Аналогично спецификация параметра находится непосредственно в зоне, связанной с телом охватывающей подпрограммы или с оператором принятия. Пакет ВТАНОАДО образует зону описания, которая охватывает все библиотечные модули; предполагается, что неявное описание каждого библиотечного модуля находится непосредственно в этом пакете (см. Равд. 8.8 и 10.1.1). Зоны описания могут быть вложены в другие зоны описания.
Например, подпрограммы, пакеты, задачные модули, настраиваемые модули и операторы блока могут быть вложены дРуг в друга и содержать описания именуемого типа, оператор цикла, а также операторы принятия. Ссыпки: библиотечный модуль 10.1, задачный модуль 9, именуемый тип 3.7, настраиваемое тело 12.2, неполное оп~ сэние типа 3.8.1, неявное описание 3.1, оператор блока 5.8, опера- П алла ал изюсгл тор принятия 9.5, оператор цикла 5.5, описание 3.1, описание входа 9.5, описание задачи 9.1, описание пичного типа 7.4, описание настройки 12.1, описание пакета 7.1, описание параметров настройки 12.1, описание переименования 8.5, описание подпрограммы 8.1, основное опи. саине 3.1, пакет 7, раздел дискриминантов 3.7.1, раздел формальных параметров 6.1, след тела 10.2, спецификатор представления записи 13.4, спецификация дискриминанта 3.7.1, специфи. кация параметра 6.1, стандартный пакет 8.6, субмодуль 10.2, тело задачи 9.1, тело пакета 7.1, тело подпрограммы 6.3.
82 ОБЛАСТИ ДЕЙСТВИЯ ОПИСАНИЙ Дпя каждой формы описания правила языка определяют конкретную часть текста программы, называемую областью действия описания или областью действия описанного понятия. Более того, если описание сопоставляет некоторое обозначение с описанным понятием, то эта часть текста также называется областью действия этого обозначения (либо идентифи. катора, либо символьного литерала, либо знака операции, либо обозначения базовой операции). В области действия понятия, и только в ней, есть места, в которых будет правильным использовать сопоставленное обозначение для ссылки на описанное понятие. Эти места определены правилами видимости и совмещения. Область деиствия описания, находящегося непосредственно в зоне описания, распростра. няется от начала описания до конца зоны описания; этот раздел области действия описания называется непосредственной областью действия.
Более того, для любого из описаний, перечисленных ниже, область действия описания распространяется за пределы непосредственной области действию а) описание, которое находится непосредственно в видимом разделе описания пакета; б) описание входа; в) описание компоненты; г) спецификация дискриминанта; д) спецификация параметра; е) описание параметра настройки. В каждом из этих случаев данное описание находится непосредственно в некотором охватывающем описании, а область действия данного описания распространяется до конца области действия охватывающего описания. При отсутствии описания подпрограммы спецификация подпрограммы, заданная в теле подпрограммы ипи в следе тела, действует как описание, и в этом случае применимо правило д). Примечание.
Приведенные правила, определяющие область действия, применяются для всех форм описаний, определенных в равд. 3.1; они применяются, в частности, и к неявным описаниям. Правило а] применяется к описанию пакета и тем самым неприменимо к спецификации пакета в описании настройки.
Для вложенных описаний правила от а) до е) применяются на каждом уровне. Например, если заданный модуль описан в видимом разделе пакета, то область действия входа задачного модуля распространяется до конца области действия этого задачного модуля, т. е. до конца области действия охватывающего пакета. Область действия спецификатора использования определена в равд. 8.4. Ссылки: видимость 8.3, видимый раздел 7.2, задача 9, знак операции 6.1, зона описания 8.1, идентификатор 2.3, именуемый тип 3.7, находится непосредственно в 8.1, неявное описание 3.1, описание 3.1, описание входа 9.5, описание задачи 9.1, описание компоненты 3.7, описание настройки 12.1, описание пакета 7.1, описание параметров настройки 12.1, описанйе переименования 8.5, описание подпрограммы 6.1, описание типа 3.3.1, основная операция 3.3.3, распространяется 8.1, спецификатор использования 84, символьный литерал 2.5, след тела 10.2, совмещение 6.6, 8.7, спецификация дискриминанта 3.7.1, спецификация пакета 7.1, спецификация параметра 6.1, тело подпрограммы 6.3.
83. ВИДИМОСТЬ Правила видимости, а в случае совмещенных операций и правила совмещения, трактуют вхождение идентификатора в данной точке текста программы. Под идентификатором в дан. ной главе подразумевают любой идентификатор, кроме зарезервированных слов, обозначений атрибутов, идентификаторов прагм и аргументов прагм. Под точкой текста программы в этой главе понимают место вхождения лексемы (например, идентификатора), а под совмещенными описаниями — описания подпрограмм, литералов перечисления, одиночных входов. Для каждого идентификатора и в каждой точке текста программы правила видимости определяют набор описаний (с этим идентификатором), т.е.
варианты трактовки идентифика- Глава В тора Говорят, что описание видимо в данной точке текста, когда, согласно правилам видимости, оно определяет возможные трактовки его вхождения. Возникают два случая: ° Правила видимости определяют не болев одной трактовки идентификатора. В таком случае правил видимости достаточно для выявления описания, определяющего трактовку вхождения идентификатора, или прн отсутствии такого описания для выявления того, что это вхождение в данной точке незаконно, не является правильным. ° Правила видимости определяют более чем одну трактовку. В таком случае вхождение идентификатора является правильным в даннои точке, если и только если точно одно видимое описание выбирается правилами'совмещения в соответствии с данным контекстом (см. равд. 6.6 для правил совмещения и равд. 8.7 для контекста, используемого при разрешении совмещения!. Описание видимо только в определенной части своей области деиствия; эта часть начи.
нается в конце описания, а в спецификации пакета эта часть начинается с зарезервированного слова )в, следующего за идентификатором пакета.(Это правило применяется, в частности, для неявных описаний.) Видимость может быть прямой или видимостью по имени. Описание видимо по имени в точках программы для: а) описания, находящегося в видимом разделе описания пакета — на месте постфикса после точки в расширенном имени, префикс которого обозначает пакет; б) описания входа конкретного задачного типа — на месте постфикса после точки в именованной компоненте, префикс которой соответствует задачному типу; в) описания компоненты конкретного описания именуемого типа — на месте постфикса после точки в именованной компоненте, префикс которой соответствует этому типу, а также на месте простого имени компоненты (перед составным ограничителем = >) в именованном сопоставлении компонент агрегата этого типа; г) спецификации дискриминанта конкретного описания типа — в местах, предназначенных для описания компоненты и простого имени дискриминанта (перед составным ограничителем = >) в именованном сопоставлении дискриминанта в ограничении дискриминанта для этого типа; д] спецификации параметра данной спецификации подпрограммы или описания входа — на месте формального параметра (перед составным ограничителем = >) в именованном сопоставлении параметра соответствующей подпрограммы или вызова входа; е) описания параметра настройки данного настраиваемого модуля — на месте формального параметра настройки (перед составным ограничителем = >) в именованном сопоставлении соответствующей конкратизации настройки.
Наконец, в зоне описания, связанной с конструкцией, не являющейся описанием именуемого типа, любое описание видимо по имени на месте постфикса после точки в расширенном имени, префикс которого обозначает эту конструкцию. Там, где нет видимости по имени, говорят, что описание видимо непосредственно. Описание видимо непосредственно в определенном разделе его непосредственной области деиствия; этот раздел распространяется до конца непосредственной области действия описания, за исключением тех мест, где это описание скрыто, как поясняется ниже. Кроме того, описание, находящееся непосредственно в видимом разделе пакета, может быть сделано непосред. ственно видимым с помощью спецификатора использования по правилам, описанным в равд.