如何使用从 DCG Prolog one 转换而来的普通子句?

问题描述

我知道 DCG 只是一个语法糖,因为序言将它们翻译成正常的条款。 因此,例如,

palindrome --> [].
palindrome --> [_].
palindrome --> [X],palindrome,[X].
/*  it is translated into:  */
palindrome(A,A).
palindrome([_|A],A).
palindrome([X|A],B) :- palindrome(A,C),C=[X|B].

我的问题是,我想避免使用“短语”子句,并访问 DCG 转换的正常代码。 如果我尝试要求回文序列,它根本不起作用。 例如:

? palindrome([1,2],X).
X = [1,2] .

我希望得到与以下相同的结果:

?- phrase(palindrome,[1,2,1]).
true
?- phrase(palindrome,X]).
X = 1

不使用短语。 谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)