Н. Джехани - Язык Ада (1988) (1160771), страница 75
Текст из файла (страница 75)
— Прим. рвд. Глава 3 Пример рекурсивного типа: !трв сеьц — неполное описание типа фуре ОМК Ь аваева СЕШ; !урв СЕШ Ь мвмв ЧАШЕ: (МТЕОЕй; ЗОСС: ЦМК; РВЕО: ОйК! елЫ гевал(; НЕАО: ЦМК = пем СЕЬЧ(О, лав, лив); МЕХТ: ОНК:= НЕАО.ЗОСС; Примеры взаимозависимых ссылочных типов: !ура РЕВЗОМ(ЗЕХ: ОеМОЕй); -- неполное описание типа !ура САЙ: — неполное описание типа !уре РЕВЗОМ МАМЕ Ь аваева РЕЯЗОй; !урв САВ МАМЕ (в аваева САВ; !ура САВ Ь ювегЬ МОМЗЕВ: !НТЕОЕЙ: ОУЧНЕЯ '. РЕЯЗОН МАМЕ: епв мазы; !урв РЕЙЗОМ(ЗЕХ: ОЕМОЕЯ) Ь мевп( йАМЕ: ЗТЯ(МО(1 ..
201; 51йТН: ОАТЕ; АОЕ: ЛЧТЕОЕй гаева О .. !30; ЧЕН(СЬЕ; САВ МАМЕ; заев ЗЕХ Ь влил М => уу(РЕ: РЕй50М йАМЕ(ЗЕХ => РЯ талал Р > НОЗВАНО: РЕЯЗОй йАМЕ(5ЕХ => М); ааЬ авве; епв мввп(; му сАЙ, ЧООВ сАЙ, йехт сАВ: сАЙ МАме; — неявно инициированы — пустым значением Ссылки: идентификатор 2.3, имя 4.1, компонента 3.3, обозначение типа 3.3.2, ограничение 3.3, ограничение дискриминанта 3.7.2, описание 3.1, определение ссылочного типа 3.8, предвыполнение 3.9, раздел дискриминантов 3.7.1, согласован 5.3.1, ссылочный тип 3.8, тип 3.3, указание подтипа 3.3.2, указывать 3.8, элемент описания 3.9. 3.8.2. ОПЕРАЦИИ НАД ССЫЛОЧНЫМИ ТИПАМИ Базовые операции над ссылочным типом включают присваиванив, генераторы для этого ссылочного типа, проверку принадлежности, явное преобразование, квалификацию и литерал лмЕ.
Если указываемый тип — тип с дискриминантами, то базовые операции включают именование соответствующих дискриминантов; если указываемый тип — именуемый тип, то они включают именование соответствующих компоненг, если указываемый тип — индексируемый тип, то они включают образование индексируемых компонент и отрезков; если указываемый тип — задачный тип, то они включают именование входов и семейств входов. Кроме того, базовые операции включают образование именуемой компоненты с зарезервированным сло. вом аЯ (см.
4.1.3). Если указываемый тип — индексируемый тип, то базовые операции включают атрибуты с обозначениями Р(ЯЗТ, (АЗТ, ЯАНЭЕ и ьЕМОТН (н эти же атрибуты с параметром й для номера измерения). префикс ка1кдого из этих атрибутов должен быть значением ссылочного типа Эти атрибуты вырабатывают соответствующие характеристики указываемого объекта (см. 3.5.2).
Описания и типы Если указываемый тип — задачный тип, то базовые операции включают атрибуты с обозначениями ТЕПМ(НАТЕО и СА(.(АВ(.Е (см. 9.9). Префикс каждого из этих атрибутов должен быть значением ссылочного типа. Эти атрибуты вырабатывают соответствующие характеристики задачных объектов. Кроме того, атрибут Т'ВАЗЕ (см. 333) и атрибуты представления 78)ЕЕ и ТВТОВАЭЕ 812Е (см. 13.7.2) определены для ссылочного типа или подтипа Т; атрибуты А'612Е и А'АООВЕВВ определены для ссылочного объекта А (см.
13.7.2). Кроме базовых операции над ссылочным типом включают предопределенное сравнение на равенство и неравенство. Ссылки: атрибут 4.1.4, базовая операция 3.3.3, базовый тип 3.3, генератор 4.8, дискриминант 3.3, задачный тип 9.1, именуемая компонента 4.1.3, именуемый тип 3.7, индексируемая компо. нента 4.1.1, индексируемый тип 3.6, квалифицированное выражение 4.7, литерал 4.2, личный тип 7.4, набор 3.8, обозначение атрибута 4.1.4, объект 3.2.1, ограниченный индексируемый под. тип 3.6, операция 3.3, отрезок 4.1.2, подтип 3.3, преобразование 4.6, присваивение 5.2, проверка принадлежности 4.5, 4.5.2, ссылочный тип 3.8, тип 3.3, указываемый подтип 3.8, указываемый тип 3.8, указывать 3.8.
3.9. РАЗДЕЛЫ ОПИСАНИЙ Раздел описаний содержит элементы описания (возможно, и ни одного). раздел описаний::= (основной элемент описания) '9(ополнительный элемент описания) основной элемент описания::= основное описание спецификатор представления ( спецификатор использования дополнительный элемент описания;;= тело описание подпрограммы ( описание пакета описание задачи описание настройки спецификатор использования ( конкретизация настройки тело с= соответствующее тело (след тела соответствующее тело::= тело подпрограммы ~ тело пакета ( тело задачи Предвыполнение раздела описаний состоит из предвыполнения элементов описания, если они есть, в порядке их следования в разделе описаний. После своего предвыполнения эле.
мент описания называется предеыполненным. До окончания своего предвыполнения (включая фазу перед предвыполнением) элемент описания еще не предвыполнен. Для нескольких форм элементов описания правила языка (в частности, правило определения области действия и правила видимости) таковы, что использование понятия до предвы. полнения элемента описания, который объявляет это понятие, либо невозможно, либо является неправильным. Например, невозможно использование имени типа для описания объекта, если соответствующее описание типа еще не предвыполнено.
В случае тел осуществляются следующие проверки: ° При вызове подпрограммы проверяется, предвыполнено ли уже тело подпрограммы. ° При активизации задачи проваряется, предвыполнено ли уже тело соответствующего задачного модуля. ° При конкретизации настраиваемого модуля, имеющего тело, проверяется, предвыполнено ли уже тело настраиваемого модуля. Если одна из этих проверок дает отрицательный результат, возбуждается исключение РВООВАМ ЕВВОВ.
Если описание подпрограммы, описание пакета, описание задачи или описание настраиваемого понятия являются элементами описания данного раздела описаний, то тело (если оно существует) программного модуля, описанного элементом описания, должно само быть эле. ментом описания этого раздела описаний (и должно помещаться ниже). Если тело представлено следом тела, то для этого программного модуля необходим раздельно компилируемый субмодуль, содержащий соответствующее тело (см.
10.2). 332 Глава 3 Ссылкиз активизация 93, видимость 8.3, вызов подпрограммы 64, исключение РВООВАМ ЕНЙОй 11.1, конкретизация 12.3, область действия 8.2, тип З.З. Предвыполнение описаний: 3.1, конкретизация настройки 12.3, неполное описание типа 3.8.1, описание входа 9.5, описание задачи 9.1, описание компоненты 3.7, описание пичного типа 7.4.1, описание настройки 12.1, описание обьекта 3.2.1, описание пакета 7.2, описание переименования 8.5, описание подпрограммы 6.1, описание подтипа 3.3.2, описание субконстанты 7.4.3, описание типа 3.3.1, описание числа 3.2.2, спецификация дискриминанта 3.7.1, спецификация литерала перечисления 3.5.1, спецификация параметра 6.1, спецификация параметра цикла 5.5, Предеыполненне определений типа: 3.3.1, определение вещественного типа 3.5.6, определе.
ние именуемого типа 3.7, определение индексируемого типа 3.6, определение перечиспимого типа 3.5.1, определение производного типа 3.4, определение ссылочного типа 3.8, определение целого типа 3.5.4. Предвыполнение других конструкций: библиотечный модуль 10.5, задача 9.2, компилируемый модуль 10.1, настраиваемое тело 12.2, раздел дискриминантов 3.7.1, след тела 10.2, спецификатор использования 8.4, спецификатор контекста 10.1, спецификатор представления 13.1, спецификатор совместности 10.1.1, спецификация задачи 9.1, субмодуль 10.2, тело задачи 9.1, тело пакета 7.1, тело подпрограммы 6.3, формальный параметр настройки 12лц 12.3.
Глава 4 ИМЕНА И ВЫРАЖЕНИЯ 8 этой главе приведены правила, применяемые к различным формам имен и выражений, а также к их вычислению. 4.1. ИМЕНА имя з= простое имя символьный литерал знак операции индексируемая компонента ) отрезок именуемая компонента ( атрибут простое имя з= идентификатор префикс::= имя ( вызов функции Простое имя понятия — это либо идентификатор, связанный с понятием описанием, либо другой идентификатор, связанный с понятием описанием переименования.
Определенные формы имени (индексируемые и именуемые компоненты, отрезки и атрибуты) включают в себя префикс, который может быть именем или вызовом функции. Если тип префикса — ссыпочный тип, то префикс не должен быть именем, которое обозначает формальный параметр вида ом( или его подкомпоненту. Если префикс имени — вызов функции, то имя обозначает компоненту, отрезок, вход или семейство входов результата вызова функции либо (если результат — ссыпочное значение) объект, указанный результатом. Говорят, что префикс соответствует некоторому типу в одном из следующих случаев: ° Тип префикса — это рассматриваемый тип.
° Тип префикса — ссылочный тип, который указывает на рассматриваемый тип. 8ычисление имени определяет понятие, обозначенное этим именем. Для. простого имени, символьного литерала или знака операции вычисление имени не имеет другого результата. 8ычиспение имени, имеющего префикс, включает в себя вычисление префикса, т. е. соответствующего имени или вызова функции. Если тип префикса — ссылочный тип, то вычисление префикса включает в себя определение объекта, указанного соответствующим ссылочным значением; если значение префикса является пустым ссылочным значением, исключая случай префикса атрибута представления (см.
13.7.2), то возбуждается исключение СОМВТВА(МЕО ЕВВОВ (см. 13.7.2). Примеры Р! (з'М(Т СООМТ 8ОАВО 'глАТВ1Х ВАМРОМ ЕВВОВ простых имен: (см. 3.2.1) (см. 32.1) (см. 3.2.1) (см. 3.6.1) (см. 3.6) (см. 6.1) (см. 11.1) числа константы скалярной переменной массива типа функции исключения простое имя простое имя простое имя простое имя простое имя простое имя простое имя Ссылки: атрибут 4.1.4, вид 6.1, возбуждение исключения 11, вход 9.5, вызов функции 6.4, вычисление 45, знак операции 6.1, идентификатор 2.3, именуемая компонента 4.1.3, индексируемая компонента 4.1.1, исключение СОМЗТВА(МТ ЕВВОВ 11.1, компонента 3.3, объект 3.2.1, Имена могут обозначать понятия, описанные явно или неявно (см.