У меня возникают некоторые трудности с пониманием того, как анализировать некоторый текст из stdin в нужные переменные с помощью DCG.
Игроки: player1 & player2
Доска: 3 хода
1A: player1
5D: player2
8Z: player1
Так что в игре есть два имени переменных игрока, а затем несколько ходов от каждого игрока, я хотел бы иметь предикат, что унифицирует Players = [player1,player2] , turn1 = [1A,8A] , turn2 = [5D].
Как мне сделать это с помощью DCG?
Я пробовал следующее:
main :-
read_string(user_input,"\n","\r",_,FirstLine),
phrase(readPlayers(Players),FirstLine),
write(Players).
parsePlayers --> [Players].
parseColon --> [:].
parseSpace --> [ ].
readPlayers([P1,P2]) --> parsePlayers,parseColon,parseSpace,P1,parseSpace,[&], parseSpace,P2.
Однако в SWI-Prolog это не работает, как мне этого добиться?