La Warren Abstract Machine ( abstract Warren Machine ) è una macchina virtuale per l'implementazione del linguaggio Prolog . Questa macchina è composta da uno speciale set di istruzioni e da una memoria . È stato definito da David HD Warren nel 1983 . È una delle implementazioni classiche di prolog .
Il set di istruzioni WAM è composto da otto tipi di istruzioni.
Queste istruzioni consentono la gestione dell'interruzione del prologo (predicato! / 0).
La memoria della macchina WAM è suddivisa in cinque parti (dal fondo della memoria):
O il seguente programma prologo:
fille(anne). fille(claire). garcon(B) :- \+ fille(B).Con un'implementazione basata sul WAM, il codice del prodotto sarebbe nella forma (nel mini-assemblatore 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))