Справочник Ada 2005
1.1.3 Соответствие реализации стандарту
Требования к реализации
Соответствующая реализация должна:
- Переводить и правильно выполнять законные программы, написанные на языке Ada, при условии, что они не превышают возможностей реализации;
- Определять все программы или программные модули, которые превышают возможности реализации (или генерировать соответствующее исключение во время выполнения);
- Определять все программы или программные модули, содержащие ошибки, обнаружение которых требуется данным международным стандартом;
- Предоставлять все библиотечные модули, определенные языком, необходимые данным международным стандартом;
- Не содержать вариаций, кроме явно разрешённых данным международным стандартом, или тех, которые невозможно или нецелесообразно избежать, учитывая среду выполнения реализации;
- Указывать все такие вариации способом, предписанным данным международным стандартом.
Внешний эффект выполнения программы Ada определяется в терминах её взаимодействия с внешней средой. Следующие определяются как внешние взаимодействия:
- Любое взаимодействие с внешним файлом (см. A.7);
- Выполнение определённых команд_кода (см. 13.8); то, какие команд_кода вызывают внешние взаимодействия, определено реализацией.
- Любой вызов импортированной подпрограммы (см. Приложение B), включая любые передаваемые ей параметры;
- Любой результат, возвращённый или исключение, распространяемое из основной подпрограммы (см. 10.2) или экспортированной подпрограммы (см. Приложение B) внешнему вызывающему элементу;
- Любое чтение или обновление атомного или изменчивого объекта (см. C.6);
- Значения импортированных и экспортированных объектов (см. Приложение B) в момент любого другого взаимодействия с внешней средой.
Соответствующая реализация данного международного стандарта должна генерировать для выполнения данной программы Ada набор взаимодействий с внешней средой, порядок и временная последовательность которых согласуются с определениями и требованиями данного международного стандарта для семантики данной программы.
Реализация, соответствующая данному стандарту, должна поддерживать каждый необходимый компонент ядра языка, как указано. Кроме того, реализация, соответствующая данному стандарту, может соответствовать одному или нескольким приложениям специализированных потребностей (или ни одному). Соответствие приложению специализированных потребностей означает, что каждая требуемая функция приложения предоставляется, как указано.
Реализация, соответствующая данному международному стандарту, может предоставлять дополнительные атрибуты, библиотечные модули и псевдокоманды. Однако она не должна предоставлять атрибут, библиотечный модуль или псевдокоманду с тем же именем, что и атрибут, библиотечный модуль или псевдокоманда (соответственно), указанные в приложении специализированных потребностей, если предоставленная конструкция не указана в приложении специализированных потребностей или обладает меньшими возможностями, чем требуется приложением. Программа, которая пытается использовать недоступную функцию приложения, должна быть идентифицирована реализацией до запуска или должна вызвать исключение во время выполнения.
Требования к документации
Определённые аспекты семантики определяются как определённые реализацией или неопределённые. В таких случаях набор возможных эффектов указан, и реализация может выбрать любой эффект из набора. Реализации должны документировать своё поведение в ситуациях, определённых реализацией, но документация не требуется для неопределённых ситуаций. Характеристики, определённые реализацией, обобщены в M.2.
Реализация может выбрать документировать поведение, определённое реализацией, либо документацией того, что происходит в общем случае, либо путём предоставления некоторого механизма для пользователя, чтобы определить, что происходит в конкретном случае.
Рекомендации по реализации
Если реализация обнаруживает использование недоступной функции приложения специализированных потребностей во время выполнения, она должна, если возможно, вызывать Program_Error.
Если реализация хочет предоставить определяемые реализацией расширения функциональности библиотечного модуля языка, она обычно должна добавлять дочерние элементы к библиотечному модулю.
ПРИМЕЧАНИЯ
2 Вышеуказанные требования подразумевают, что реализация, соответствующая данному стандарту, может поддерживать некоторые из функций, требуемых приложением специализированных потребностей, без поддержки всех необходимых функций.