我想了解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