2009-11-26 5 views
5

Viele Implementierungen von Prolog-in-Scheme sind da draußen. Z.B. Kanren, Schelog.Parsen mit DCGs in Schema (ohne Prolog)?

Offenbar implementiert Norvig in "Paradigmen der KI-Programmierung" den Prolog-zu-Lisp-Compiler in Lisp, um Grammatikeinheiten mit definierter Klausel zu verwenden.

Aber gibt es einen einfacheren sauberen Weg? Vielleicht eine clevere Verwendung von amb, um die Implementierung eines vollständigen "Prologs" zu vermeiden? Was ist der einfachste Weg, DCG-basierte Parsing in Scheme zu haben?

Antwort

4

DCGs verwenden sowohl Unification als auch Backtracking, sodass die Implementierung des Kerns von Prolog nicht umgangen werden muss. Das heißt, Sie können jedes reine Prolog-Programm als DCG darstellen, das die leere Liste analysiert.

Sie könnten es tun, wenn Sie nur für einen speziellen Fall von DCGs interessiert sind, wie solche ohne Variablen (gut nur zum Erkennen, nicht zum Parsen).