ГОСТ Р ИСО 10303-11— 2009
(* Определяются строки типов текущего ссылающегося экземпляра.
*)
set_of_types := TYPEOF(bag_of_referring_instances [j ]);
(• Если ссылающийся экземпляр принадлежит к одному из типов только
зависимо реализуемых выбираемых элементов, то текущий исходный экземпляр еще
может быть недопустимо реализован. В противном случае все в порядке, и проверяет ся
следующий исходный экземпляр.
*)
IF set_of_types <= set_of_input_types THEN — оператор подмножества
(* Ссылающийся экземпляр принадлежит к одному из ограничен
ных типов. Однако на него самого может ссылаться допустимый экземпляр; тогда
текущий экземпляр также мог бы быть допустимым.
Таким образом, осуществляется рекурсивный вызов данной функции со ссы
лающимся экземпляром в качестве входного параметра.
Чтобы избежать бесконечного цикла в случае, когда множество экземпляров
ссылается друг на друга в замкнутом цикле, сначала проверяется, присутствует ли
текущий ссылающийся экземпляр в списке уже обработанных элементов цепочки.
‘>
IF NOT (bag_of_referring_instances [j ] IN previous_in_chain) THEN
previous_in_chain_plus := previous_in_chain ♦
set_ofJnputJnstances [ i ];
IF dependently_instantiated([bag_of_referring_instances [ j ]],
set_of_input_types,
previous_in_chain_p!us) THEN
dependentlyjnstantiatedJ lag : = true;
ESCAPE; — экземпляр, зависимо реализуемый; переход к
— следующему исходному экземпляру
ELSE
(* Экземпляр, не зависимо реализуемый: переход к следующему ссылающемуся
экземпляру. *)
SKIP;
ENDJF;
ENDJF;
ELSE
dependently_instantiated_flag := true;
ESCAPE: - - экземпляр, зависимо реализуемый; взять следующий
— исходный экземпляр
ENDJF;
END_REPEAT;
IF NOT dependentlyjnstantiatedjlag THEN
RETURN (false); ”
ENDJF;
ELSE
RETURN (false); — на экземпляр нет ссылок => недопустимо реализован
ENDJF;
END_REPEAT;
ELSE
RETURN (false); — нет входных данных
ENDJF;
RETURN (true):
END_FUNCT10N; — конец функции dependencyJnstantiated
END_SCHEMA; — конец схемы artifact
Когда внешнее объявление импортируется в схему, то другие объявления могут оказаться импортирован
ными неявно (см.
11.4). В
схему
artifact
копируются те неявно импортированные объявления, которые необходи
мы для ссылочной полноты схемы
artifact,
включая их помеченные комментарии. При этом разрешаются конф
ликты имен и модифицируются представления строковых идентификаторов.
П р и м е ч а н и е — Копирование неявно импортированных элементов может быть рекурсивным процес
сом.
Примеры
1В данном примере исходная модель состоит из двух схем:
SCHEMA export;
TYPE colour = EXTENSIBLE ENUMERATION;
END_TYPE;
164