【发布时间】:2020-04-04 09:22:28
【问题描述】:
我在理解如何使用 DCG 将一些文本从标准输入解析为所需变量时遇到了一些困难。
玩家:player1 & player2
棋盘:3 步
1A:播放器1
5D:播放器2
8Z:播放器1
所以一个游戏有两个玩家变量名,然后是每个玩家的一些动作,我希望有一个统一的谓词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 中不起作用,我该如何实现呢?
【问题讨论】:
-
写
":"代替[:]。同样" "代替[ ],这与[]相同。还有parsePlayers到底是什么意思?至少你在这里得到了警告。
标签: prolog swi-prolog dcg