Sintaxe de prólogo dcg muito básica

Eu estou tentando entender o prólogo e gramática de cláusula definida, mas estou tendo muita dificuldade em entender os dois.

Eu estou realmente tentando entender como usar a sintaxe dcg ...

Aqui eu tenho dois exemplos:

O primeiro é, na verdade, o código de outra pergunta neste fórum, mas com uma pergunta adicional:

O código ficou assim:

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

E quando o Prolog é perguntado sobre isso, ele retorna verdadeiro / falso, mas eu não posso, para a vida de mim, descobrir como realmente modificá-lo para "ligar" o valor, se for perguntado s (X, [2, +, 2] []. ele retornaria o valor de primeiro, então ao invés de retornar true ele diria X = 2

De qualquer forma de volta para a questão real. Eu tenho algumas regras no prólogo normal e esta é uma delas; na verdade, não faz nada e foi apenas inventado como exemplo.

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.

Basicamente, estou perguntando se alguém poderia traduzir isso para o DCG para que eu pudesse tentar entender a sintaxe básica do DCG! Eu tentei ler alguns tutoriais, mas eu sinto que não fiquei mais sábio ...

questionAnswers(2)

yourAnswerToTheQuestion