Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
35
Добавлен:
11.04.2015
Размер:
849.92 Кб
Скачать
  1. Спецификации (Specifications)

Синтаксис:

specification ::=

module_decl-string

module_decl ::=

scheme_decl │

object_decl

Терминология. Модуль– это либо некоторый объект1, либо схема.

Контекст и правила видимости. Контекстом входящих в спецификацию объявленийmodule_decl-string являются сами эти объявленияmodule_decl-string. Это означает, что порядок следования определений не существенен, т.е. схема может быть использована до своего определения.

Контекстные условия. Все объявления модулейmodule_decl должны быть совместимы.

Семантика.Спецификация употребляется для определения одного или более модулей.

  1. Объявления (Declarations)

3.1. Общие положения

Синтаксис:

decl ::=

scheme_decl │

type_decl │

value_decl │

variable_decl │

channel_decl │

axiom_decl

Терминология. Объявление представляет собой список определений (definitions) одинаковоговида– схем, типов, значений, переменных, каналов или аксиом. Каждое определение обычно задает некоторый идентификатор или операцию длясущностиэтого вида, следовательно, обычно оно устанавливает одно или болеесвойствтакой сущности.

Атрибуты. За исключением определений аксиом с каждым видом определений связано некоторое максимальное определение. В соответствующих разделах для каждого вида определений описывается максимальное определение, специфичное для данного вида.

3.2. Объявление схем (Scheme Declarations)

Синтаксис:

scheme_decl ::=

scheme scheme_def-list

scheme_def ::=

opt-comment-string id opt-formal_scheme_parameter = class_expr

formal_scheme_parameter ::=

( formal_scheme_argument-list )

formal_scheme_argument ::=

object_def

Терминология. Схема представляет собой класс или параметризованный класс.Параметризованный класс– это отображение списка объектов на классы: каждый объект списка отображается в некоторый класс.

Максимальным классомсхемы является максимальный класс соответствующего выражения, задающего класс в определении данной схемы.

Определение схемы scheme_def является циклическим, если конструкцииopt‑formal_array_parameter или class_expr зависят от схемы, которая сама задается этим определением scheme_def.

Конструкция зависит от схемыS, если она, игнорируя ограничения в выражениях для подтипов, используетSили любую схему, содержащую определение, в которомopt-formal_scheme_parameterилиclass_exprзависят отS.

Контекст и правила видимости. В определении схемыscheme_defконтекстом необязательного параметраopt‑formal_scheme_parameter является сам этот параметрopt‑formal_scheme_parameterи выражениеclass_expr, входящее в данное определение схемы.

Контекстные условия. Все входящие в объявление схемыscheme_declопределенияscheme_defдолжны быть совместимы.

Входящие в формальный параметр схемы formal_scheme_parameter аргументыformal_scheme_argument должны быть совместимы.

Определение схемы scheme_defне должно быть циклическим.

Атрибуты. В определении схемыscheme_defмаксимальным классом идентификатораidявляется максимальный класс входящего в это определение выраженияclass_expr, и в случае присутствия необязательного параметраformal_scheme_parameterидентификаторidимеет также формальный параметр, которым и являетсяformal_scheme_parameter.

Максимальное определение определения схемы scheme_defполучается из исходного определения путем замещения в его составе определений объектов, входящих вformal_scheme_parameter(в случае его присутствия), на соответствующие максимальные определения этих объектов и выраженияclass_exprна соответствующее выражение для максимального класса.

Семантика. Определение схемыscheme_defзадает конкретный идентификаторidдля определяемой схемы.

  • Определение схемы в форме:

id = class_expr

задает конкретный идентификатор idдля класса, представленного выражениемclass_expr.

  • Определение схемы в виде:

id(formal_scheme_argument-list) = class_expr

задает идентификатор id для параметризованного класса.

3.3. Объявление типов (Type Declarations)

Синтаксис:

type_decl ::=

type type_def-list

type_def ::=

sort_def │

variant_def │

union_def │

short_record_def │

abbreviation_def

Контекстные условия. Составляющие объявление типовtype_declопределения типовtype_defдолжны быть совместимы.

Соседние файлы в папке ТРПО