我正在为我的模型生成一个消息序列图(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.")
但我收到了这个错误消息:
错误:错误:异常编译引发,解析中止
有人能提出解决这个问题的建议吗?
问题已解决。为了用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.")
)