Очень простой синтаксис пролога dcg

Я пытаюсь понять пролог и грамматику определенного предложения, но мне очень трудно понять их оба.

Я действительно пытаюсь понять, как использовать синтаксис DCG ...

Здесь у меня есть два примера:

Первый на самом деле код из другого вопроса на этом форуме, но с дополнительным вопросом:

Код выглядел так:

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

И когда Пролога спрашивают об этом, он возвращает истину / ложь, но я могут для меня жизнь выяснить, как на самом деле изменить это, чтобы "связывать» значение так, если спросить s (X, [2, +, 2], []). он вернул бы значение first, поэтому вместо возврата true это 'скажу Х = 2

В любом случае вернемся к актуальному вопросу. У меня есть несколько правил в нормальном прологе, и это одно из них; это нена самом деле ничего не делал и был просто выдуман в качестве примера.

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.

По сути, я спрашиваю, может ли кто-нибудь перевести это на DCG, чтобы я мог попытаться понять основной синтаксис DCG! Я'Я пытался прочитать некоторые учебники, но я чувствую, что у меня нетне стал мудрее ...

Ответы на вопрос(2)

Ваш ответ на вопрос