在Scheme中使用DCG进行解析(没有Prolog)?

发布于 2024-08-13 00:29:43 字数 203 浏览 3 评论 0原文

有很多 Prolog-in-Scheme 实现。例如 Kanren、Schelog。

显然,在“AI 编程范式”中,Norvig 在 Lisp 中实现了 Prolog-to-Lisp 编译器,以便使用定语从句语法。

但有没有更简单干净的方法呢?也许巧妙地使用 amb 来避免实现完整的“Prolog”? 在Scheme中进行基于DCG的解析最简单的方法是什么?

Lots of Prolog-in-Scheme implementations are out there. E.g. Kanren, Schelog.

Apparently in "Paradigms of AI Programming" Norvig implements Prolog-to-Lisp compiler in Lisp in order to use Definite Clause Grammars.

But is there a simpler cleaner way? Maybe some clever use of amb to avoid implementing a full "Prolog"?
What is the easiest way to have DCG-based parsing in Scheme?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半衾梦 2024-08-20 00:29:43

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

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

DCGs use both unification and backtracking, so there's no avoiding implementing the core of Prolog. That is, you can represent any pure Prolog program as a DCG parsing the empty list.

You might do it if you only care about some special case of DCGs, like ones without variables (good only for recognizing, not parsing).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文