【发布时间】:2020-10-02 20:06:34
【问题描述】:
我正在尝试用 C 编写 Prolog 的 WAM 实现。我注意到 Prolog 数据类型仅在四种标记类型中描述:REF、STR、CON 和 LIS。
执行堆中的每个单元格都包含令牌的类型及其在堆中的位置。
请注意,没有提及其实际名称(即 Z、W)。堆不应该指向符号表中的符号及其值吗?纯序言实现中是否有符号表?我的解析器是创建符号表还是构造堆? WAM A Tutorial Implementation 没有提到这些。
【问题讨论】:
-
Z和W是逻辑变量。 WAM 不需要跟踪变量名称。在此示例中,Z 分配给单元格 2,W 分配给单元格 3,因此需要保持一致的是分配给它们的单元格,如您发布的图中所示。应该有某种原子表来跟踪原子(在示例中为p、h和f)。
标签: prolog symbol-table warren-abstract-machine