ГОСТ Р 59791—2021
{[comment], nestedOrs} ?ors?, [endComment] ?ecm?, «]»;
?ng? =?cm?, nestedOrs(?ors?), ?ecm?,
end;
nestedOrs(?ors?) -> ?g?;
nestedOrs = ([comment] ?cm?, “Or” ?frst?, [“:”], CG ?ng?,
[endComment] ?ecm?, “]”, nestedOrs ?more? | );
if (?frst?= ) ?g? = ;
else ?g? = “~[“, ?cm?, CG(?ng7), ?ecm?, “]", nestedOrs(?more?);
end; end;
Правило для nestedOrs рекурсивно обрабатывает последовательность из нуля, одного или нескольких логи
ческих контекстов типа Or. Если Ьне содержит вложенных контекстов Or, eitherOr(b) должно иметь значение «~[ ]»,
что неверно; соответствующее высказывание CLIF (or) определяется как ложное.
Комментарий: область применения кванторов в любом логическом контексте должна определяться вложе
нием их переводов в основной формат CGIF. Любая определяющая метка в контексте типа If должна иметь в своей
области применения вложенный контекст типа Then. При этом ни один из двух любых контекстов,
непосредственно содержащихся в контексте типа Either, Equivalence или Equiv, не должны иметь другого в своей
области примене ния.
Б.3.6 Концепт
Определение: строка с, состоящая из четырех подстрок, любая или все из которых могут быть опущены: на
чальный комментарий cm, поле типа, поле объекта ссылки и конечный комментарий
ест.
Поле объекта ссылки с может содержать определяющую метку последовательности с маркером последова
тельности
sqn.
В таком случае поле типа с должно быть пустым, перед определяющей меткой последовательности
может стоять значение «@every», а в поле объекта ссылки
с
не должно быть никаких ссылок и концептуальных
графов.
Если
sqn
отсутствует, поле типа с должно содержать выражение типа
tx
и двоеточие «:» или необязательную
ссылку
ty,
называемую меткой типа, и необязательное двоеточие «:». Если
sqn
отсутствует, поле объекта ссылки с
должно содержать необязательную определяющую метку с именем CG
df
(перед которой может стоять «@every»),
последовательность из нуля, одной или нескольких ссылок
rf
и концептуальный граф
д,
который может быть пу
стым. Если все варианты опущены, понятие с должно иметь вид строки «[ ]».
Перевод: тройная переменная (
r,q,g
), состоящая из ссылки или связанной метки последовательности г, кван
тора
q
(«@every» или пустой строки) и концептуального графа
д,
который должен содержать по крайней мере один
концепт.
concept = "[", [comment] ?cm?,
( (typeExpression ?tx?,
| [[“#” , “?”], CGname] ?ty?, [“:”]),
[[“@every”] ?q?,CGname ?df?], {reference} ?rf?, CG ?x? | [“@every”] ?q?,seqmark ?sqn? ), [endComment]
?ecm?, “]”;
if (?sqn?~= ) ?r? = “7”, ?sqn?; 7g1? = “[“, ?cm?,
elif (?df?~= ) ?r? = “7”, ?df?; 7g1? = “[“, ?cm?,
?sqn?, ?ecm?];
?df?, ?ecm?];
if (?rf?~= ) 7g2? = “[“,?r?, ?rf?, “]”; end;
elif (?rf?~= ) ?r? = frst(?rf?);
7g2? = “[“, ?cm?,?rf?, ?ecm?, “]”;
else ?df? = gensym(); ?r? = “7”, ?df?;
7g1? = “[“, ?cm?,?df?, ?ecm?, “]”;
end;
if (?tx?~= ) ?b? = frst(typeExpression(?tx?));
?gx? = second(typeExpression(?tx?));
7g3? = substitute(?r?,?b?,?gx?);
elif (?ty?~= ) 7g3? = “(“, ?ty?, ?r?, “)”; end;
if (?x?~= ) 7g4? = “[“, CG(?x7), “]”;
end;
?g? = 7g17, 7g27, 7g37, 7g47;
end;
В поле типа разрешено использовать четыре варианта переменных: выражение типа
tx,
связанную метку
кореферентности с префиксом «#», константу или пустую строку. После
tx
обязательно должно стоять двоеточие.
Правила перезаписи перемещают функции из концепта с в четыре строки, которые объединяются в концепту
альный граф
д: д
1 — это концепт существования с определяющей меткой из с или с меткой, созданной gensym(),
если в с отсутствует определяющая метка или ссылка;
д2
— это концепт кореферентности, если в с встречаются
какие-либо ссылки;
дЗ
— это концептуальное отношение с меткой типа (улибо концептуальный граф, созданный из
выражения типа
tx\ д4
— это контекст, содержащий любой непустой CG х. Все комментарии
cm
и
ест
помещаются в
первый непустой концепт:
д’\
или
д2.
45