Я создаю диаграмму последовательности сообщений (MSC) для своей модели. У меня есть следующий код при переходе, и он работает:
input (p_id, p_cert, v_id, v_cert);
action
MSC.addEvent(msc, p, i, func_to_concat(p_id, p_cert));
if v_cred(p_id, p_cert, v_id, v_cert) then
MSC.addEvent(msc, i, p, "Some message here.")
else
MSC.addEvent(msc, i, p, "Some other message.")
Я протестировал этот код, и он работал нормально. Затем я решил поместить его в функцию, которая имеет следующий код:
fun a(msc, e, i, id, cert, v_id, v_cert) =
MSC.addEvent(msc, i, e, func_to_concat(id, cert));
if v_cred(id, cert, v_id, v_cert) then
MSC.addEvent(msc, i, e, "Some message here.")
else
MSC.addEvent(msc, i, e, "Some other message.")
Но я получаю это сообщение об ошибке:
Error: Error: exception Compile is raised with Aborted parsing
Кто-нибудь может подсказать что-нибудь для решения этой проблемы?
Проблема решена. Чтобы указать командный блок на языке ML, мы должны заключить код в круглые скобки:
fun a(msc, e, i, id, cert, v_id, v_cert) = (
MSC.addEvent(msc, e, i, func_to_concat(id, cert));
if v_cred(id, cert, v_id, v_cert) then
MSC.addEvent(msc, i, e, "Some message here.")
else
MSC.addEvent(msc, i, e, "Some other message.")
)