我一直在通过Learn Prolog Now 取得进展!作为自学,现在正在学习定从句语法。我在实践课程的一项任务中遇到了一些困难。任务内容如下:
形式语言 a n b 2m c 2m d n由以下形式的所有字符串组成:一个完整的a s 块,后跟一个完整的b s 块,然后是一个完整的c s 块,然后是一个完整的d s块,使得a和d块的长度完全相同,并且c和d块的长度也完全相同,并且分别由偶数个c s 和d s 组成。例如,ε、abbccd和aaabbbbccccddd都属于 a n b 2m c 2m d n。编写一个生成这种语言的 DCG。
我能够编写生成 a n d n、 b 2m c 2m甚至 a n b 2m和 c 2m d n的规则……但我似乎无法将所有这些规则加入 a n b 2m c 2m dn 。_ 以下是我可以生成 a n d n和 b 2m c 2m的规则。
s1 --> [].
s1 --> a,s1,d.
a --> [a].
d --> [d].
s2 --> [].
s2 --> c,c,s2,d,d.
c --> [c].
d --> [d].
a n b 2m c 2m d n真的是 CFG,是否可以仅使用课程中教授的内容(没有额外的参数或代码等)编写 DCG?如果是这样,任何人都可以为我提供一些指导,我可以如何加入这些,以便我可以解决给定的任务?