我正在尝试理解Prolog和DCG的基本语法,但是很难获取关于真正基础知识的正确信息。请看下面的代码,我基本上只想实现这样的效果:
Output = te(a, st).
Code:
test(te(X,Y)) --> [X], test2(Y).
test2(st(_X)) --> [bonk].
?- test(Output, [a, bonk],[]).
Output = te(a, st(_G6369)).
我想做的就是在末尾添加单词“st”,我最接近的方法是这样做,但不幸的是“st”后面跟着一堆无意义的东西,很可能是因为单例_X
。我只想让我的Output
包含类似这样的内容:te(a, st)。
phrase/2
调用非终端更加安全。因此,你的查询应该是:?- phrase(test(Output), [a,bonk]).
- false