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 instrukcí WAM se skládá z osmi typů instrukcí.
Tyto pokyny umožňují správu přerušení prologu (predikát! / 0).
Paměť na WAM stroje je rozdělen do pěti částí (ze spodní části paměti):
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))