Каков правильный порядок генерации 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(б), продолжить]).