我想了解prolog和dcg的基本语法,但确实很难获得关于真正基本的东西的正确信息。看看下面的代码,我基本上只是想实现这样的事情:序言,非常简单的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
+1:阅读答案很有趣* bonk * – CapelliC