ГОСТ Р ИСО/МЭК 10746-3-2001
параметрам вызова. Продукция Term соответствует завершению. Nil в левой части продукции Opsig означает,
что данный вызов нс имеет параметров. Nil в правой части продукции Opsig (т.с. в сигнатуре сообщения)
означает, что завершение не ожидается. Метки а, соответствуют именам операций. Метки с, соответствуют
именам завершений.
Отношение подтипа для типов интерфейсов операционного сервера
(2
о) определяется следующим
образом:
V ||. 1г е Type„(S), IjS 12 = l|.optypc S N.opt уpc
A.S Типы интерфейсов потоков
Полное определение правил подтипов сигнатур для интерфейсов потоков находится вне сферы действия
настоящей базовой модели (см. 7.2А2). Отмстим, однако, что отдельные типы сигнатур потоков могут быть
формализованы путем их интерпретации на языке Туре.
Элементы Туре, связанные с сигнатурой потока, определяются строго определенными средами с общим
подмножеством Туре, определяемым грамматикой рисунка А.8, где метка а, соответствует имени потока.
В этом случае правила подтипов в 7.2.4.2. связанные с соответствующими потоками (при условии, что
они имеют одинаковую причинность), соответствуют отношению подтипа.
a :: =
< a,: Flowsig>
Rawsig : : ■=
Arg -» Nil
Aig : : =
Nil |t
Рисунок А.8 — Абстрактный синтаксис .тля типов сигнатур интерфейсов потоков
Л.6 Пример
Рассмотрим следующие определении типа сигнатуры интерфейса операций (т.е. строю определенную
среду):
у* {11—><х.f, I— > РЬ
где
а
■=def : <ор: t -> |ok : Nil. nok : Nil), factory : Nil -* |ok : fi] >
() = def < new : Nil -» [ok : t|>
и t. f, eTvar: op. factory, new, ok. m>k ■= L (op. factory и new — имена операций; ok и nok —имена
завершений).
Интуитивно ясно, что среда усоответствует определению двух типов t и f,. f, имеет только одну операцию
new, которая нс имеет аргументов и возвращает указатель на экземпляр типа t. Можно представить, например,
что f, является типом производителя объектов, который по запросу (т.с. при каждом вызове операции new)
создаст объекты с интерфейсом типа t. ! имеет две операции: ор и factory. Операция ор получает в
качестве аргумента указатель на экземпляр объекта типа t —эго первый пример рекурсивного определения.
Операция factory нс имеет ар|умеитов и вознрашасг указатель на экземпляр типа I’,. Можно представить,
например, что в целях управления каждый обьскт с интерфейсом типа t может но запросу (т.е. при вызове
операции factory) возвращатьуказатель на создавшего сто производителя. ’.Этовторой пример рекурсивного
определения, гак как
f, ссылается на I.
Применяя данное выше определение Val. определяя у, =■deflf, [—> р} и используя правило равенства Е.Ю,
подучаем:
Val(t. у) = pt. Val(a. (Г, |—> р}
= pt. < op : Val(l. у,) -* [ok : Nil. nok : Nil)
factory : Nil
—>
[ok : Val(f(. y,))>
= pt.< o p : l —з |ok : Nil. nok : Nil|
factory : Nil -» [ok : pfr Val(p,
<Z>)\
>
= pt. < op:
t
-*
|ok : Nil. nok : Nil|
factory : Nil -» [ok : p<f, < new : Nil -* [ok : t|>)>
w pt. < op: t —>[ok : Nil. nok : Nil[
factory : Nil[ok :<new : Nil
-*
[ok : t|>[>