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).