3

Hassan Aït-Kaci 的“Warren's Abstract Machine: A Tutorial Reconstruction”第 2.2 节中,L0 查询的编译顺序非常明确:寄存器必须使用从左到右的广度优先搜索分配,代码必须使用左-右后序深度优先搜索。

在 2.3 节中,寄存器分配(L0 程序)的顺序很明确:从左到右的广度优先搜索。代码生成的顺序不是。给出了唯一的例子,我不知道我应该使用 BFS 还是 DFS 来生成代码。

有人可以给我以下 L0 程序的 WAM 代码吗?

p(q(r(a)),s(b))。

4

1 回答 1

2

我把你的程序放在sample.pl

$ cat sample.pl
 p(q(r(a)),s(b))。

使用GNU Prolog,然后我做了:

$ gplc -w sample.pl

然后将以下WAM指令包含在sample.wbc

子句(p(q(r(a)),s(b)),[
    获取结构(q/1,0),
    统一结构(r/1),
    统一原子(a),
    获取结构(s/1,1),
    统一原子(b),
    继续])。
于 2016-10-28T20:55:32.197 回答