Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТРПО_теория / ТРПО / RSL14_1p (Восстановлен).doc
Скачиваний:
37
Добавлен:
11.04.2015
Размер:
893.95 Кб
Скачать
  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 должны быть совместимы.

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