我在我的序言解释器中加载了接下来的两个事实:
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
这个解释正确吗?