Граф зависимостей правил в Прологе - PullRequest
5 голосов
/ 19 ноября 2010

Допустим, я хочу создать граф зависимостей правил для программы Prolog в Prolog.Например, следующая программа

foo(X) :- bar(X, 0).
bar(A, B) :- quux(A), coox(B).
baz.

приведет к тому, что будет выполнено следующее (при использовании assert):

depends(foo, [bar]).
depends(bar, [quux, coox]).
depends(baz, []).

или что-то подобное выше, которое я мог бы легко использовать длясделать график.Подход, о котором я думал, - это чтение строк входного файла в виде строк и выполнение с ними простого поиска и замены, но это выглядит как уродливый, непрологичный хак.Какие-нибудь другие варианты, которые используют металогические способности Пролога?

1 Ответ

3 голосов
/ 19 ноября 2010

Нет необходимости читать файл как (неструктурированный) строка : исходный файл Prolog представляет собой последовательность допустимых Prolog term , с которыми можно читать пункты (например,) читать / 1 и рассуждать о них так же, как и о любых других терминах.(: -) / 2 уже является предопределенным оператором, и вы можете легко проверить предложения с помощью встроенных метапредикатов Prolog (arg / 3, functor / 3, = .. / 2 и т. Д.).Это автоматически заботится о комментариях исходного уровня и т. Д., Как и следовало ожидать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...