使用Scheme中的DCG进行解析(不使用Prolog)?

时间:2009-11-26 07:05:10

标签: parsing scheme prolog dcg

很多Prolog-in-Scheme实施都在那里。例如。 Kanren,Schelog。

显然在“人工智能编程的范例”中,Norvig在Lisp中实现了Prolog-to-Lisp编译器,以便使用Definite Clause Grammars。

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

1 个答案:

答案 0 :(得分:5)

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

如果您只关心DCG的一些特殊情况,例如没有变量的DCG(仅适用于识别,而不是解析),您可以这样做。