Каков правильный порядок генерации WAM-кода для программных терминов L0?

В Разделе 2.2 Хасана Айт-Качи "Абстрактная машина Уоррена: реконструкция учебника" порядок составления запросов L0 достаточно ясен: регистры должны быть распределены с помощью поиска слева направо, а код должен генерироваться с левой - справа налево поиск сначала в глубину.

В разделе 2.3 порядок распределения регистров (программ L0) ясен: поиск слева направо в ширину. Порядок генерации кода нет. С единственным приведенным примером я не могу сказать, должен ли я использовать BFS или DFS для генерации кода.

Может кто-нибудь дать мне код WAM для следующей программы L0?

р (д (г (а)), с (б)).

1 ответ

Решение

Я положил вашу программу в sample.pl:

$ cat sample.plр (д (г (а)), с (б)).

Используя GNU Prolog, я сделал:

$ gplc -w sample.pl

Следующие инструкции WAM содержатся в sample.wbc:

пункт (р (д (г (а)), с (б)),[
    get_structure(кв /1,0),
    unify_structure(г /1),
    unify_atom(а),
    get_structure (с /1,1),
    unify_atom(б),
    продолжить]).
Другие вопросы по тегам