gpt4 book ai didi

Prolog 运算符优先级和规则匹配

转载 作者:行者123 更新时间:2023-12-04 15:28:29 24 4
gpt4 key购买 nike

我的 prolog 解释器中加载了接下来的两个事实:

foo(U+V,1).
foo(U*V,2).

现在我尝试使用该结果进行下一个查询:
foo(x*x+x,R).  -->  R = 1
foo(x+x*x,R). --> R = 1
foo(x*x*x,R). --> R = 2

现在我尝试下一个查询:
foo(x*x-x,R).  -->  no

据我了解,这是通过运算符优先级如何构建树表达式来解释的:
x+x*x  -->  +           so it matches with  -->  +
/ \ / \
x * U V
/ \
x x

x-x*x --> - DOES NOT matches any fact.
/ \
x *
/ \
x x

这个解释正确吗?

最佳答案

是的,这是正确的。

默认运算符优先级被定义为自然的,即使用正常的数学优先级。但如果你不喜欢那样,你可以重新定义它。

改变优先级是否是一个好主意是另一回事,它有效地改变了 Prolog 的语法并可能导致解析问题。特别是如果您更改 Prolog 语法的运算符的优先级,优先级高于 1000。

关于Prolog 运算符优先级和规则匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/767799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com