Bardzo podstawowa składnia prologu dcg

Staram się zrozumieć gramologię prologu i określonej klauzuli, ale bardzo trudno mi zrozumieć oba.

Naprawdę próbuję zrozumieć, jak używać składni dcg ...

Oto dwa przykłady:

Pierwszy to właściwie kod z innego pytania na tym forum, ale z dodatkowym pytaniem:

Kod wyglądał tak:

s --> first, operator, second.
first --> [X].
operator --> ['+'].
second --> [X].

A kiedy Prolog jest o to pytany, zwraca prawdę / fałsz, ale nie mogę przez całe życie dowiedzieć się, jak właściwie zmodyfikować to, aby „związać” wartość, więc jeśli zapytam s (X, [2, +, 2] , []). zwróci wartość pierwszego, więc zamiast zwracać prawdę, powiedzą X = 2

W każdym razie wracam do właściwego pytania. Mam kilka zasad w normalnym prologu i to jest jeden z nich; w rzeczywistości nic nie robi i został jedynie stworzony jako przykład.

do(X, Y, [H|T], Sum):-
    H == 1, %check if H is 1
    X = H,
    Y = T,
    Additional is H+5,
    Sum is Additional+Additional.

Zasadniczo pytam, czy ktoś mógłby przetłumaczyć to na DCG, abym mógł spróbować zrozumieć podstawową składnię DCG! Próbowałem czytać kilka samouczków, ale czuję, że nie miałem nic mądrzejszego ...

questionAnswers(2)

yourAnswerToTheQuestion