从 Mercury 到高级 C 代码的编译方案
1 不同代码模型间的转换
当一个 m foo 目标出现在 m bar 上下文(其中 foo ≠ bar )时,需要修改为该目标生成的代码,使其符合 m bar 预期的调用约定。通常,确定性分析会确保上下文预期的确定性比目标的确定性更宽松。具体有以下几种情况:
- m det 目标在 m semi 上下文:
succeeded = Goal
=⇒
do Goal
succeeded = TRUE;
-
m det目标在m non上下文:
Goal && Cont()
=⇒
do Goal
Cont();
-
m semi目标在m non上下文:
Goal && Cont()
=⇒
bool succeeded;
succeeded = Goal
if (succeeded) Cont();
<
超级会员免费看
订阅专栏 解锁全文
1169

被折叠的 条评论
为什么被折叠?



