Н. Джехани - Язык Ада (1988) (1160771), страница 77
Текст из файла (страница 77)
7.5) операция видимого раздела пакета (см. 7.4.2) переменная, описанная в тепе процедуры (см. 6.5) переменная, описанная в задачном модуле (см. 9.12) вход задачного модуля (см. 9П2) переменная оператора блока (см. 5.6) имя предопределенного типа (см. 8.6 и приложение С) Имела я вы ажелия 337 4.1.4.
АТРИБУТЫ Атрибут обозначает базовую операцию над понятием, задаваемым префиксом. атрибут:: = префикс'обозначение. атрибута обозначение атрибута::= простое имя ((универсальное статическое выражение)) Примеры атрибутов: СОЬОЙ'Р!ЙЗТ минимальное значение перечислимого типа СОБОЙ то же, что и атрибут СОьОЙ'Р(ЙЗТ точность типа ЙЕАЕ верхняя граница диапазона 2-го индекса для ВОАЙО диапазон первого индекса для ВОАЙО ЕКГУ, если задача РОСЕ(К) завершена количество битов под записи типа ВАТА адрес переменной МЕЗВАВЕ именуемого типа (см.
3.3.1 и 3.5) (см. 3.3.2 и 3.3.3) (см. 3.5.7 и 3.5.6) ЙА1МВОУУ'ВАЗЕ'Р!ЙЗТ ЙЕА1.'016!ТЗ ВОАЙО'(.АЗТ(2) (см. 3.6.1 и 3.6.2) (см. 3.6.1 и 3.6.2) (см. 9.2 и 9.9) (см. 3.7 и 1 3.7.2) (см. 3.7.2 и 13.7.2) ВОАЙО'ЙАМ6Е(1) РООЦК)'ТЕЙМ1МАТЕО ВАТА'812Е МЕЗВА6Е'АООЙЕЗЗ Ссылки: базовая операция 3.3.3, зарезервированное слово 2.9, имя 4.1, описанное понятие 3.1, префикс 4.1, простое имя 4.1, соответствует типу 4.1, статическое выражение 4.9, тип 3.З, универсальное выражение 4ЛО. 42. ЛИТЕРАЛЫ Литерал — это либо числовои литерал, либо литерал перечисления, либо литерал пмй, либо строковый литерал, либо символьный литерал. Вычисление литерала вырабатывает соответствующее значение.
Числовые литералы — это литералы типов уннеерсальнын целый и универсальный вещественный. Литералы перечисления включают символьные литералы и вырабатывают значения соответствующих перечислимых типов. Литерал пм11 вырабатывает пустое ссылочное значение, которое не указывает ни на какой объект вообще. Строковый литерал — это базовая операция, которая преобразует последовательность символов в значение одномерного массива символьного типа; границы этого массива определяются в соответствии с правилами для позиционных агрегатов массива (см. 4.3.2).
Для пусто. го строкового литерала верхняя граница массива совпадает с нижней границей предшествен. ника, задаваемого атрибутом РЙЕО. Вычисление пустого строкового литерала возбуждает исключение СОМЗТЙА(МТ ЕЙНОЙ, если нижняя граница не имеет предшественника (см. 3.5.5). Тип строкового литерала и тип литерала пв1! должны определяться исключительно из контекста, в котором эти литералы встречаются, без учета самого литерала, но используя при этом только тот факт, что литерал пмй — это значение ссылочного типа, а строковый лите.
рал — значение одномерного массива, тип компонент которого — символьный. Применимые обозначения атрибутов зависят от конкретного префикса. Атрибут может быть базовой операциеи, вырабатывающеи значение, но может быть и функцией, типом или диапазоном. Смысл префикса атрибута должен быть определим независимо от обозначения атрибута и независимо от того, что это есть префикс именно атрибута. Определенные в языке атрибуты приведены в приложении А. Конкретная реализация может ввести дополнительные атрибуты, описание которых должно быть дано в приложении Р.
Обозначения таких атрибутов должны отли~аться от обозначений атрибутов, опредепенных в языке. Вычисление имени, являющегося атрибутом, состоит из вычисления префикса. Примечание. Обозначения атрибутов 016(ТЗ, ОЕЕТА и ЙАМОЕ имеют идентификаторы, совпадающие с зарезервированными словами. Однако неоднозначность устранится, если перед обозначением атрибута будет стоять апостроф. Единственными предопределенными обозна. чениями атрибутов, содержащими универсальное выражение, являются те, которые соответствуют некоторым определенным операциям типа над индексируемыми типами (см.
3.6.2], Символьные литералы, содержащиеся в строковом литерале и соответствующие графиче. ским символам, должны быть видимы в месте нахождения строкового литерала (хотя сами эти символы для определения типа данного строкового литерала не используются). Примеры: 3.14159 26536 литерал вещественного типа 1 345 — литерал целого типа КЛУБЫ вЂ” литерал перечисления 'А' — символьный литерал "НЕКОТОРЫЙ ТЕКСТ" — — строковый литерал Ссылки: агрегат 4.3, видимость 8.3, граница массива 3.6, графический символ 2.1, индексируемый тип 3.6, исключение СОМВТВА!МТ ЕВВОВ 11.1, литерал вещественного типа 2.4, лите.
рал перечисления 3.5.1, литерал целого типа 2.4, массив 3.6, объект 3.2.1, ссылочное значение пмй 3.8, пустой литерал 3.8, размерность 3.6, символьный литерал 2.5, символьный тип 3.5.2, ссылочный тип 3.8, строковый литерал 2.6, тип 3.3, тип компоненты 3.3, указывать 3.8, универсальный вещественный тип 3.5.6, универсальный целый тип 3.5.4, числовой литерал 2.4. 4.3. АГРЕГАТЫ Агрегат — это базовая операция, которая объединяет значения компонент в составное зна чение именуемого ипи индексируемого типа.
агрегат::= (сопоставление компонент (, сопоставление компонент)) сопоставление компонент;:= [выбор () выбор) = > ) выражение Каждое сопоставление компонент связывает выражение с компонентами. Сопоставление компонент называется именованным, если компоненты явно определены выборами, и позиционным в противном случае. При позиционном сопоставлении каждой отдельно вэятоя компо.
ненте неявно соответствует некоторая позиция: именуемым компонентам — в порядке следо. вания их описаний, индексируемым компонентам — по возрастанию индекса. Именованные сопоставления могут стоять в произвольном порядке (исключая выбор о((зегв), но если в агрегате одновременно используются позиционные и именованные сопоставления, то первыми должны стоять позиционные сопоставления, каждое на своем месте. Сле. довательно, за именованными сопоставлениями в агрегате могут следовать только именован.
ные сопоставления. В агрегатах, содержащих единственное сопоставление, должно всегда ис. пользоваться именованное сопоставление. Правила для сопоставления компонент агрегатов именуемого типа и агрегатов индексируемого типа определены в равд. 4.3.1 и 4.3.2. Синтаксио выборов сопоставления компонент совпадает с синтаксисом разделов вариантов (см.
3.7.3). Выбор, являющийся простым именем компоненты, допустим только в агрегатах именуемого типа. Выбор, являющийся выражением или дискретным диапазоном, допустим только в агрегатах индексируемого типа; выбор, являющийся простым выражением, задает значение индекса; дискретный диапазон задает диапазон значений индекса. Выбор о(Пете до.
пустим только в последнем сопоставлении компонент в качестве единственного выбора и определяет все оставшиеся компоненты, если они есть. Каждая компонента значения, определяемого агрегатом, должна встретиться в агрегате один и только один раз. Следовательно, каждый агрегат должен быть полным, и не допуска. ется, чтобы данная компонента была задана более чем одним выбором. Тип агрегата должен быть определим исключительно из контекста, в котором встречается агрегат, без учета самого агрегата, используя только тот факт, что его тип должен быть со.
ставным и нелимитированным. Тип агрегата в свою очередь определяет требуемый тип для каждой его компоненты. Примечание. Приведенное выше правило означает, что для определения типа агрегата не может быть использована информация, которую несет в себе агрегат. В частности, зто определение не может испольэовать тип выражения в сопоставлении компонент, формы или типы выборов.
Агрегат с одной компонентой всегда можно отличить от выражения, заключенного в скобки, благодаря обязательному именованию компоненты такого агрегата. ЗЗЗ Имена и аы ажелия Ссылки: агрегат записи 4.3.1, агрегат массива 4.3.2, базовая операция типа 3.3.3, выбор 3.7.3, выражение 4.4, дискретный диапазон 3.6, именуемый тип 3.7, индекс 3.6, индексируемый тип 3.6, компонанта 3.3, лимитируеиый тип 7.4.4, первичное 4.4, простое выражение 4.4, простое имя 4.1, раздел вариантов 3.7.3, составное значение 3.3, составной тип 3.3, тип 3.3.
4.3.1. АГРЕГАТЫ ЗАПИСЕЙ Для агрегата именуемого типа (агрегата записи) имена компонент, заданные выборами, должны обозначать компоненты (включая дискриминанты) именуемого типа. Выбор облив в агрегатах записей должен представлять хотя бы одну компоненту. Сопоставление компонент с выбором об(егв или более чем с одним выбором допускается только тогда, когда представ. ленные компоненты имеют один и тот же тип. Выражение в сопоставлении компонент должно иметь тип соответствующей компоненты записи. Значение, определяющее дискриминант, должно быть задано статическим выражением (заметим, что это значение определяет, какие из зависимых компонент должны присутствовать в значении записи).
При вычислении агрегатов записи порядок вычисления выражений в сопоставлениях компонент в языке не определен. Выражение в именованном сопоставлении вычисляется один раз для каждой сопоставленной компоненты. Производится проверка на принадлежность значения каждой подкоипоненты агрегата подтипу этой подкомпоненты. При нарушении проверки возбуждается исключение СОМЗТЯА)МТ ЕЯЯОЯ. Пример агрегата записи с позиционным сопоставлением: (4, ЗО(.У, 1776) — см.