prolog-DCG变换

prolog-DCG变换,prolog,dcg,Prolog,Dcg,E->T是什么意思?变量E表示变量T 这是链接的代码: e(TS,R) :- t(TS,R). 感谢您的帮助您确定您询问的是E->T(如果E,那么T)而不是E->T(小写(感谢潜伏者!)和DCG语法,其中“DCG”表示“定句语法”) 因为DCG语法 e --> t. 是的别名(或快捷方式或语法糖,如果您愿意的话) 更一般地说,DCG语法在所涉及的子句末尾添加了两个参数,在:-运算符的右侧生成一个链,其中链的起点和终点是在左侧添加的参数 因此(举例说明) 是的别名 d(L1, Lnp1)

E->T
是什么意思?变量
E
表示变量
T

这是链接的代码:

e(TS,R) :- t(TS,R).

感谢您的帮助

您确定您询问的是
E->T
(如果
E
,那么
T
)而不是
E->T
(小写(感谢潜伏者!)和DCG语法,其中“DCG”表示“定句语法”)

因为DCG语法

e --> t.
是的别名(或快捷方式或语法糖,如果您愿意的话)

更一般地说,DCG语法在所涉及的子句末尾添加了两个参数,在
:-
运算符的右侧生成一个链,其中链的起点和终点是在左侧添加的参数

因此(举例说明)

是的别名

d(L1, Lnp1) :- c1(L1, L2), c2(L2, L3), ..., cn(Ln, Lnp1).

我不知道你说的是什么意思,这是链接的代码。“链接”在这里是什么意思<术语
E->T
中的code>(>)/2并不完全意味着“暗示”,但根据
E
T
的结果,它在Prolog中确实有特定的行为<如果
E
失败,则code>E->T将失败<如果
E
成功,然后
T
失败(与
E,T
相反,在这种情况下,如果
E
成功,然后
T
失败,它将返回到
E
)<如果
E
然后
T
成功,则code>E->T成功
E->T
的行为类似于
E!,T
。你真的是指
e-->T
?并留意个案。这在序言中很重要。而
-->
->
@lower-D'oh之间有着巨大的区别!小写,右边。答案已更正;谢谢
d --> c1, c2, ...., cn.
d(L1, Lnp1) :- c1(L1, L2), c2(L2, L3), ..., cn(Ln, Lnp1).