The Warren Abstract Machine ( abstract Warren Machine ) er en virtuell maskin for å gjennomføre språk Prolog . Denne maskinen består av et spesielt instruksjonssett samt et minne . Den ble definert av David HD Warren i 1983 . Det er en av de klassiske implementeringene for prolog .
Den WAM instruksjonssett består av åtte typer instruksjoner.
Disse instruksjonene tillater styring av prologpausen (predikat! / 0).
Den hukommelse av den WAM maskinen er delt opp i fem deler (fra bunnen av minne):
Enten følgende prologprogram:
fille(anne). fille(claire). garcon(B) :- \+ fille(B).Med en implementering basert på WAM, vil produktkoden være av skjemaet (i WAM mini-assembler):
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))