La macchina astratta di Warren

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 .

Set di istruzioni

Il set di istruzioni WAM è composto da otto tipi di istruzioni.

Metti le istruzioni

Ottieni istruzioni

Set di istruzioni

Istruzioni per l' unificazione

Istruzioni di controllo

Istruzioni per la selezione

Dichiarazioni di indice

Istruzioni di cut-off

Queste istruzioni consentono la gestione dell'interruzione del prologo (predicato! / 0).

Struttura della memoria

La memoria della macchina WAM è suddivisa in cinque parti (dal fondo della memoria):

Esempi

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))

link esterno