ГОСТ Р ИСО/ТО 10303-12-2000
ENDJTYPE;
cl = с{ас-> (@s4. @еЗ, @е2, @el);};
с2 = с{ас->
(s{@l},
@еЗ,
@еЗ);};
ENTITY с;
ас : LIST 11:?| O F
s;
END_ENTITY:
12.6.2 Случай сложного выбора
В этом случае листья дерева не могут быть различимы только по их значениям. Это проис
ходит. если:
a) листья являются определенными типами данных с идентичными базовыми типами;
b
) листья япляются типами ENUMERATION, множества значений которых на листьях не
разобщены. Например, множества |red. green, blue] и |red. amber. green| не разобщены.
Значение экземпляра выбора в этом случае должно быть представлено в EXPRESS-1 либо
ссылкой на экземпляр, либо поименованным значением.
Пример 58 - Отображение сложного выбора
si = size(@rl};
s2
=
size{radius{4.3}};
al
=
area{7.5};
rl
=
radius{27.89);
TYPE size = SELECT
(area, radius);
END TYPE;
TYPE area = REAL;
END TYPE;
TYPE radius = REAL;
END_TYPE;
ENTITY circle;
howbig : size:
WHERE
howbig > 0.0;
END_ENTITY;
cl = circle{howbig -> area] PI};);
c2 = circIe{ho\vbig -> radius] 1.0};};
c3 = circlejhowbig -> @sl;};
c4 = circle(howbig -> @al};
c5
=
circlejhowbig -> @s2};
12.7 Отображение EXPRESS-константы
EXPRESS-константа (CONSTANT) сшгтаксически отображается в EXPRESS-1-конструкцию
constant_spec. Это значит, что в EXPRESS-1 определяются только идентификатор константы и
значение, а область значений константы задается в исходном EXPRESS-определенин. Кроме то го.
значение константы должно быть полностью вычисляемым. Определение каждой константы,
появляющееся в экземпляре схемы, должно быть объявлено в определении EXPRESS-схемы. Од
нако не требуется, чтобы каждая EXPRESS-константа присутствовала в экземпляре схемы.
П р и ме р 59 - Отображение констант
EXPRES:EXPRESS!
CONSTANT
zero : NUMBER := 0.0;
thousand : INTEGER ;= 1000;
million : INTEGER := thousand4^ ;
origin : point := point(0.0, 0.0);
z axis : vector := |zero, zero, 1.0|;
a„set : SET OF INTEGER := |1,2, 3*3|;
a bag ; BAG OF INTEGER := |l,3 . 1);
boss : STRING := ’sir’;
underling : STRING :=hey, you’;
ENINCONSTANT;
CONSTANT
zero = = 0.0;
thousand = = 1000;
million = = 1000000;
origin = = pointjx -> 0.0;
У-> 0.0;};
z_axis = = 10.0, 0.0, 1.0];
a_set = = (1, 2. 9);
underling = = ’hey, you’;
ENINCONSTANT;
Заметим, что две константы с именами a_bag и boss не отображены в данном примере.
12.8 Отображение EXPRESS-объекта
EXPRESS-конструкния объекта (ENTITY) синтаксически отображается в EXPRESS-I-
конструкцию экземпляра объекта. Единственными внутренними фрагментами ENTITY, отобра-
36