Warrenův abstraktní stroj

Warren Abstract Machine ( abstract Warren Machine ) je virtuální stroj pro provádění jazyka Prolog . Tento stroj se skládá ze speciální sady instrukcí a paměti . To bylo definováno Davidem HD Warrenem v roce 1983 . Je to jedna z klasických implementací pro prolog .

Sada pokynů

Sada instrukcí WAM se skládá z osmi typů instrukcí.

Umístěte pokyny

Získejte pokyny

Sada pokynů

Pokyny ke sjednocení

Pokyny k ovládání

Pokyny pro výběr

Rejstříkové výkazy

Pokyny k ukončení

Tyto pokyny umožňují správu přerušení prologu (predikát! / 0).

Struktura paměti

Paměť na WAM stroje je rozdělen do pěti částí (ze spodní části paměti):

Příklady

Buď následující program prolog:

fille(anne). fille(claire). garcon(B) :- \+ fille(B).

S implementací založenou na WAM by měl kód produktu formu (v mini-assembleru WAM):

predicate(fille/1): switch_on_term(2,1,fail, fail,fail), label(1): switch_on_atom([(anne,3),(claire,5)]) label(2): try_me_else(4) label(3): get_atom(anne,0) proceed label(4): trust_me_else_fail label(5): get_atom(claire,0) proceed predicate(garcon/1): get_variable(x(1),0) put_structure(fille/1,0) unify_local_value(x(1)) execute((\+)/1))

externí odkazy