Warren 的 Abstract Machine A Tutorial Reconstruction 说明了以下变量寄存器分配规则:
- 变量寄存器是根据最少可用索引分配的。
- 寄存器 X1 总是分配给最外层的项。
- 相同的寄存器分配给给定变量的所有出现。
在本教程的进一步内容中,在构建程序查询时,给出了以下示例:
p(f(X), h(Y, f(a)), Y).
X1 = p(X2, X3, X4)
X2 = f(X5)
X3 = h(X4, X6)
X4 = Y
X5 = X
X6 = f(X7)
X7 = a
我的疑问是在考虑 f 子句的两次出现时,它们都是 f/1 结构,但具有不同的主体,因此需要以不同的方式实例化。但是,在 WAM 上下文中,究竟什么是变量、序言变量或每个术语?该条款p(f(a), f(a))
将如何构建:
X1 = p(X2, X2)
X2 = f(X3)
X3 = a
或者
X1 = p(X2, X3)
X2 = f(X4)
X3 = f(X4)
X4 = a