Разбор с DCG в Схеме (без Пролога)? - PullRequest
6 голосов
/ 26 ноября 2009

Есть много реализаций Пролога в Схеме. Например. Канрен, Schelog.

Очевидно, что в "Парадигмах программирования ИИ" Norvig реализует компилятор Пролог-на-Лисп в Лиспе, чтобы использовать грамматики для определенных выражений.

Но есть ли более простой способ очистки? Может быть, какое-то умное использование amb, чтобы избежать реализации полного "Пролога"? Какой самый простой способ провести разбор на основе DCG в Scheme?

1 Ответ

5 голосов
/ 03 декабря 2009

В DCG используются как унификация, так и возврат, поэтому нельзя не реализовать ядро ​​Prolog. То есть вы можете представить любую чистую программу Prolog как DCG, разбирая пустой список.

Вы можете сделать это, если вы заботитесь только о каком-то особом случае DCG, например без переменных (хорошо только для распознавания, а не для анализа).

...