我正在尝试为我的课程制定这个简单的 DCG 作业(Prolog)。问题是关于创建 DCG。我已经在我的代码中定义了一个话语宇宙。但是这个问题对我来说有点误导。根据我所阅读和了解的内容,使用我自己的笔记和这个 Learn Prolog Now!- 链接:http ://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse29
可以用 (a^nb^nc^n) 构造一个 DCG。其中 ab 和 c 是普通字母,n 是要与字母相乘的数字。但是,我的问题是这样的。
“设计并实现 DCG 以识别(或生成)语言 0n1n0n。”
有人可以帮我吗?这个问题到底想要什么?
关于其中一个答案,我尝试了以下代码,但没有成功。
s --> [].
s(M) --> a(M),b(M),c(M).
a --> [].
a(New) --> [0], a(Cnt),{New is Cnt+1}.
b --> [].
b(New) --> [1], b(Cnt),{New is Cnt+1}.
c --> [].
c(New) --> [0], c(Cnt),{New is Cnt+1}.
count(T, N) --> [0,1,0], count(T, M), {N is M+1}.
count(_, 0) --> [].