c предопределенное окружение языка
Ниже дана спецификация пакета STANDARD, содержащая все предопределенные в языке идентификаторы. Соответствующее тело пакета определено реализацией и не показано.
Предопределенные для описанных в пакете STANDARD типов операции даны в виде комментариев, так как они описаны неявно. Для псевдоимен анонимных типов
(универсальный-вещественный,
например), а также для неопределенной информации (например,
определен-реализацией
и
любой-фиксированный-тип)
используется курсив.
package STANDARD is
type BOOLEAN is (FALSE, TRUE);
-- Предопределенными операциями отношения -- для этого типа являются следующие:
-- function "=" (LEFT, RIGHT : BOOLEAN) return BOOLEAN; -- function "/=" (LEFT, RIGHT : BOOLEAN) return BOOLEAN; -- function "<" (LEFT, RIGHT : BOOLEAN) return BOOLEAN; -- function "<=" (LEFT, RIGHT : BOOLEAN) return BOOLEAN; -- function ">" (LEFT, RIGHT : BOOLEAN) return BOOLEAN; -- function ">=" (LEFT, RIGHT : BOOLEAN) return BOOLEAN;
-- Предопределенными логическими операциями -- для этого типа являются следующие:
-- function "and" (LEFT, RIGHT : BOOLEAN) return BOOLEAN; -- function "or" (LEFT, RIGHT : BOOLEAN) return BOOLEAN; -- function "xor" (LEFT, RIGHT : BOOLEAN) return BOOLEAN;
-- function "not" (RIGHT : BOOLEAN) return BOOLEAN;
-- Предопределен универсальный тип универсальный, целый.
type INTEGER is определен-реализацией;
-- Для этого типа предопределены следующие операции:
-- function "=" (LEFT, RIGHT : INTEGER) return BOOLEAN; -- function "/=" (LEFT, RIGHT : INTEGER) return BOOLEAN; -- function "<" (LEFT, RIGHT : INTEGER) return BOOLEAN; -- function "<=" (LEFT, RIGHT : INTEGER) return BOOLEAN; -- function ">" (LEFT, RIGHT : INTEGER) return BOOLEAN; -- function ">=" (LEFT, RIGHT : INTEGER) return BOOLEAN;
-- function "+" (RIGHT : INTEGER) return INTEGER; -- function "-" (RIGHT : INTEGER) return INTEGER; -- function "abs" (RIGHT : INTEGER) return INTEGER;
-- function "+" (LEFT, RIGHT : INTEGER) return INTEGER; -- function "-" (LEFT, RIGHT : INTEGER) return INTEGER; -- function "*" (LEFT, RIGHT : INTEGER) return INTEGER; -- function "/" (LEFT, RIGHT : INTEGER) return INTEGER; -- function "rem" (LEFT, RIGHT : INTEGER) return INTEGER; -- function "mod" (LEFT, RIGHT : INTEGER) return INTEGER;
-- function "**" (LEFT : INTEGER; RIGHT : INTEGER) return INTEGER;
-- Реализация может обеспечить другие предопределенные целые типы. Рекомендуется, чтобы -- имена этих дополнительных типов оканчивались на INTEGER, например, SHORT_INTEGER или -- LONG_INTEGER. Спецификация каждой операции для типа универсальный-целый или для -- любого дополнительного предопределенного целого типа может быть получена заменой -- идентификатора INTEGER на имя этого типа в спецификации соответствующей операции для -- типа INTEGER исключая правый операнд операции возведения в степень.
-- Универсальный тип универсальный-вещественный предопределен.
type FLOAT is определен-реализацией;
-- Для этого типа предопределены следующие операции:
-- function "=" (LEFT, RIGHT : FLOAT) return BOOLEAN; -- function "/=" (LEFT, RIGHT : FLOAT) return BOOLEAN; -- function "<" (LEFT, RIGHT : FLOAT) return BOOLEAN; -- function "<=" (LEFT, RIGHT : FLOAT) return BOOLEAN; -- function ">" (LEFT, RIGHT : FLOAT) return BOOLEAN; -- function ">=" (LEFT, RIGHT : FLOAT) return BOOLEAN;
-- function "+" (RIGHT : FLOAT) return FLOAT; -- function "-" (RIGHT : FLOAT) return FLOAT; -- function "abs" (RIGHT : FLOAT) return FLOAT;
-- function "+" (LEFT, RIGHT : FLOAT) return FLOAT; -- function "-" (LEFT, RIGHT : FLOAT) return FLOAT; -- function "*" (LEFT, RIGHT : FLOAT) return FLOAT; -- function "/" (LEFT, RIGHT : FLOAT) return FLOAT;
-- function "**" (LEFT : FLOAT; RIGHT : INTEGER) return FLOAT;
for CHARACTER use -- 128 ASCII character set without holes (0, 1, 2, 3, 4, 5, ..., 125, 126, 127);
-- Предопределенные операции для типа CHARACTER те же самые, что и для любого перечислимого типа.
package ASCII is
-- Управляющие символы:
NUL : constant CHARACTER := nul; SOH : constant CHARACTER := soh: STX : constant CHARACTER := stx; ETX : constant CHARACTER := etx; EOT : constant CHARACTER := eot; ENQ : constant CHARACTER := enq: ACK : constant CHARACTER := ack; BEL : constant CHARACTER := bel; BS : constant CHARACTER := bs; HT : constant CHARACTER := ht; LF : constant CHARACTER := lf; VT : constant CHARACTER := vt; FF : constant CHARACTER := ff; CR : constant CHARACTER := cr; SO : constant CHARACTER := so; SI : constant CHARACTER := si; DLE : constant CHARACTER := dle; DC1 : constant CHARACTER := dc1; DC2 : constant CHARACTER := dc2; DC3 : constant CHARACTER := dc3; DC4 : constant CHARACTER := dc4; NAK : constant CHARACTER := nak; SYN : constant CHARACTER := syn; ETB : constant CHARACTER := etb; CAN : constant CHARACTER := can; EM : constant CHARACTER := em: SUB : constant CHARACTER := sub; ESC : constant CHARACTER := esc; FS : constant CHARACTER := fs; GS : constant CHARACTER := gs; RS : constant CHARACTER := rs; US : constant CHARACTER := us; DEL : constant CHARACTER := del;
-- Другие символы:
EXCLAM : constant CHARACTER := '!'; QUOTATION : constant CHARACTER := '"'; SHARP : constant CHARACTER := '#'; DOLLAR : constant CHARACTER := '$'; PERCENT : constant CHARACTER := '%'; AMPERSAND : constant CHARACTER := '&'; COLON : constant CHARACTER := ':'; SEMICOLON : constant CHARACTER := ';'; QUERY : constant CHARACTER := '?'; AT_SIGN : constant CHARACTER := '@'; L_BRACKET: constant CHARACTER := '['; BACK_SLASH: constant CHARACTER := '\'; R_BRACKET: constant CHARACTER := ']'; CIRCUMFLEX: constant CHARACTER := '~'; UNDERLINE: constant CHARACTER := '_'; GRAVE : constant CHARACTER := '`'; L_BRACE : constant CHARACTER := '{'; BAR : constant CHARACTER := '|'; R_BRACE : constant CHARACTER := '}'; TILDE : constant CHARACTER := '~';
-- Строчные буквы:
LC_A : constant CHARACTER := 'a'; ... LC_Z : constant CHARACTER := 'z';
end ASCII;
-- Предопределенные подтипы:
subtype NATURAL is INTEGER range 0 .. INTEGER'LAST; subtype POSITIVE is INTEGER range 1 .. INTEGER'LAST;
-- Предопределенный строковой тип:
type STRING is array(POSITIVE range <>) of CHARACTER;
pragma PACK(STRING);
-- Следующие операции для этого типа предопределены:
-- function "=" (LEFT, RIGHT : STRING) return BOOLEAN; -- function "/=" (LEFT, RIGHT : STRING) return BOOLEAN; -- function "<" (LEFT, RIGHT : STRING) return BOOLEAN; -- function "<=" (LEFT, RIGHT : STRING) return BOOLEAN; -- function ">" (LEFT, RIGHT : STRING) return BOOLEAN; -- function ">=" (LEFT, RIGHT : STRING) return BOOLEAN;
-- function "&" (LEFT : STRING; RIGHT : STRING) return STRING; -- function "&" (LEFT : CHARACTER; RIGHT : STRING) return STRING; -- function "&" (LEFT : STRING; RIGHT : CHARACTER) return STRING; -- function "&" (LEFT : CHARACTER; RIGHT : CHARACTER) return STRING;
type DURATION is delta определен-реализацией range определен-реализацией;
-- Для типа DURATION предопределены все те операции, -- что и для любого фиксированного типа
-- Предопределены следующие исключения:
CONSTRAINT_ERROR : exception; NUMERIC_ERROR : exception; PROGRAM_ERROR : exception; STORAGE_ERROR : exception; TASKING_ERROR : exception;
end STANDARD;
Некоторые аспекты предопределенных понятий не могут быть выражены в терминах самого языка. Хотя, например, перечислимый тип BOOLEAN может быть записан посредством двух литералов перечисления FALSE и TRUE, формы управления промежуточной проверкой в самом языке выражены быть не могут.
Примечание.
Определением языка предопределены следующие библиотечные модули:
-
пакет CALENDAR
пакет SYSTEM
пакет MACHINE_CODE(ecnu он предусмотрен)
настраиваемая процедура UNCHECKED_DEALLOCATION
настраиваемая функция UNCHECKED_CONVERSION
настраиваемый пакет SEQUENTIAL_IO
настраиваемый пакет DIRECT_IO
пакет TEXT_IO
пакет IO_EXCEPTIONS
пакет LOW_LEVEL_IO
Пред. Уровень выше След.
Приложение B.
ПРАГМЫ, ПРЕДОПРЕДЕЛЕННЫЕ В ЯЗЫКЕСодержание Приложение D.
ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
Содержание раздела