prolog - 复杂抽象语法树的词序

标签 prolog iso-prolog

我有一个关于抽象语法树的问题。
特别是我想用特定的方式对几棵树进行排序
期限顺序。

如何为具有以下属性的 AST 定义术语顺序:

  • 对于几乎所有的术语,订单的行为完全相同
    就像标准的内置术语顺序。
  • 深深嵌套在 AST 中有仿函数的术语
    pos/6 表示源位置。
    这些仿函数应该在术语 order 中被忽略,即仿函数 pos 的所有术语应该比较相等。

  • 是否可以扩展内置的术语顺序
    'pos' 的特殊情况?

    什么是最有效的解决方案,什么是最
    可读的解决方案?

    也许我还应该提到我们的 AST 可能非常大,我只是对一个 AST 进行了基准测试,它有 217479 个适当的仿函数(忽略无效原子)

    最佳答案

    我会定义一个关系 ast_without_pos/2 与 AST 相关 A0到一个术语 AA0 相同除了所有 pos/6 子项都被相同的项替换,比如原子 t ,然后对这些结果项使用标准项顺序。我认为这是非常可读的,而且效率也相当高。

    关于prolog - 复杂抽象语法树的词序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9991419/

    相关文章:

    prolog - 列表内部或外部的序言对有什么用

    list - 识别 DCG 中的模式

    list - 是否可以反转只有两个参数的列表?

    prolog - prolog 中的存在限定符,使用 setof/bagof

    prolog - 可在线搜索的 Prolog 语言描述

    prolog - 在 Prolog 中定义谓词的最佳方法

    Prolog Functor - 计算 x^y

    javascript - Tau-Prolog 解释器表现出与 SWI-Prolog 不同的行为

    prolog - 序言中没有标题的子句是什么意思?

    list - Prolog 错误参数