2009-11-26 36 views
5

很多Prolog-in-Scheme实现都在那里。例如。 Kanren,Schelog。在Scheme中解析DCG(没有Prolog)?

显然在“人工智能编程范例”中,Norvig在Lisp中实现了Prolog-to-Lisp编译器,以便使用确定子句语法。

但是有没有更简单的清洁方式?也许一些聪明的使用amb来避免实现一个完整的“Prolog”? 在Scheme中进行基于DCG的解析最简单的方法是什么?

回答

4

DCG使用统一和回溯,所以没有避免实现Prolog的核心。也就是说,您可以将任何纯Prolog程序表示为解析空列表的DCG。

如果你只关心DCG的一些特殊情况,比如没有变量的情况(只适用于识别,不解析),你可能会这样做。