在我看来,将DCG(Definite Clause Grammars)定义为一种描述Prolog 中列表的紧凑方式,是一种很难定义它们的方法。据我所知,DCGs不仅用于Prolog,还用于其他编程语言,如Mercury。 另外,它们被称为DCG,因为它们代表了一组明确的条款(Horn条款)中的语法,这是逻辑程序设计的基础。 那么,为什么如果整个Prolog程序可以使用明确的条款编写,DCG仅被定义为一种在Prolog 中描述列表的紧凑方式?
注意:怀疑来自SO给出的标签dcg的描述。
答案 0 :(得分:2)
来自DCG标记维基的extended info提供了其他信息,我认为这些信息都是正确的,并且与您的第一点非常吻合:
“DCG通常与Prolog相关,但类似的语言也是如此 因为水星也包括DCG。“
关于你的第二点:强调与Prolog列表的密切关联在我看来是合理的,因为DCG确实总是描述一个列表,并且通常也非常紧凑。