2017-03-08 71 views
-1

E -> T是什么意思?变量E意味着变量Tprolog - DCG转换

这所链接的代码:

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

感谢您的帮助

+1

别名我不知道,当你说你是什么意思,*本该链接*代码。 “链接”在这里意味着什么?术语'E - > T'中的'( - >)/ 2'并不完全代表“隐含”,但它在Prolog中确实具有特定的行为,取决于'E'和'T'的结果。如果E失败,则E - > T'失败。如果'E'成功然后'T'失败(与'E,T'相反,在这种情况下如果'E'成功并且然后'T'失败,则E→T'失败并且不回溯到'E' ,它会回到'E')。如果'E'和'T'成功,则E - > T'成功。 'E - > T'表现得像'E,!,T'。 – lurker

+2

你真的指'e - > t'吗?并注意案件。它在Prolog中很重要。 ' - >'和' - >'之间有很大的区别。 – lurker

回答

4

你确定你问E -> T(如果E然后T),而不是关于e --> t(小写(感谢潜伏者!)和DCG语法,其中“DCG”用于“确定子句语法”)?

由于DCG语法

e --> t. 

e(L1, L2) :- t(L1, L2). 

更一般的别名(或快捷方式或语法糖,如果你愿意)来说,DCG语法增加了一些争论,在涉及的条款结尾处,在:-运算符的右侧创建一个链,其中链的开始和结束是在左侧添加的参数。

所以(举例)

d --> c1, c2, ...., cn. 

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

@lurker - D'oh!小写,你的权利。答复已更正;谢谢。 – max66

+0

@WillNess - 改正;谢谢。 – max66