我一直在通过Learn Prolog Now!进行自学,现在我正在学习有关定义语句的文法。我在实际会议的任务中遇到了一些困难。 The task读取:立即学习Prolog! DCG练习示例
正式语言Ñ b 2米Ç2米 d Ñ由下列形式的所有字符串的:依次不间断的块的一个秒的完整块 b的随后的ç秒的完整块,随后的 d秒的完整块, S,从而使所述一个和 d块是完全相同的长度,并且Ç和 d块也完全一样的长度和分别小号还包括一个偶数的Ç S和 d的。例如,ε, abbccd,和 aaabbbbccccddd都属于一个Ñ b 2米Ç2米 d Ñ。写一个生成这种语言的DCG。
我能够编写生成ň d ñ规则,B 2米Ç2米,甚至ň b 2米和c 2米 d ñ ...但我似乎无法将所有这些规则加入到n b 2m c 2m d n。以下是我的规则,可以生成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].
是一个ň b 2米Ç2米 d ň真的CFG,并有可能只使用了什么的教训教(没有额外的参数或代码写DCG等)?如果是这样,任何人都可以提供一些指导我如何加入这些,以便我可以解决给定的任务?
谢谢Xonix。这是有效的,但不幸的是它使用的概念直到后来才被覆盖(代码块,剪切等)。我诚实地认为仅仅使用简单的规则是不可能的,或者如果是这样,这是不值得的,因为在“现实世界”中,人们会利用其他概念,像你在样本中做的那样。 – Timothy 2010-06-08 19:58:10