【发布时间】:2012-12-16 15:40:25
【问题描述】:
我正在尝试理解序言和定句语法,但我很难理解它们。
我真的很想了解如何使用 dcg 语法...
这里有两个例子:
第一个实际上是这个论坛上另一个问题的代码,但还有一个问题:
代码如下所示:
s --> first, operator, second.
first --> [X].
operator --> ['+'].
second --> [X].
当 Prolog 被问及这个问题时,它返回真/假,但我一生都无法弄清楚如何实际修改它以“绑定”值,所以如果被问到 s(X, [2,+ ,2],[])。它会返回 first 的值,所以不是返回 true 它会说 X = 2
回到实际的问题。我在普通序言中有一些规则,这就是其中之一;它实际上并没有做任何事情,只是作为一个例子。
do(X, Y, [H|T], Sum):-
H == 1, %check if H is 1
X = H,
Y = T,
Additional is H+5,
Sum is Additional+Additional.
基本上,我在问是否有人可以将其翻译成 DCG,以便我可以尝试理解 DCG 的基本语法!我已经尝试阅读一些教程,但我觉得我还没有变得更聪明......
【问题讨论】: