Очень простой синтаксис пролога 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! Я'Я пытался прочитать некоторые учебники, но я чувствую, что у меня нетне стал мудрее ...