|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--Interpreter.PrologInterpreter.Sexp.Utils.SexpUnifier | +--Interpreter.PrologInterpreter.Unifier
La classe Unifier realizza un algoritmo per l'unificazione. L'algoritmo unifica 2 Sexp fornendo la lista delle sostituzioni effettuate. L'algoritmo effettua l'unificazione senza verificare l'eventuale presenza di riferimenti circolari. Se si desidera abilitare l'esecuzione dell'occur check, ovvero il controllo della presenza di riferimenti circolari, lo si può fare invocando il metodo void set_OCCUR_CHECK(boolean) con parametro true. L'abilitazione del controllo rende l'algoritmo meno efficiente (cioè meno veloce), ma consente di effettuare una corretta unificazione. Se si desidera disabilitare l'occur check si deve richiamare il metodo public static void set_OCCUR_CHECK(boolean) con parametro false.
L'utilizzo tipico prevede che venga utilizzato il metodo unify().
Field Summary | |
static int |
DIFFERS
Identificatore per il fallimento dell'unificazione. |
boolean |
OCCUR_CHECK
Consente di modificare l'opzione di occur check per l'algoritmo di l'unificazione. |
static int |
OCCURS
Identificatore per il fallimento dell'unificazione dovuto all'occur check. |
static int |
UNIFY
Identificatore per il successo dell'unificazione. |
Constructor Summary | |
Unifier(SexpHashtable Substitution)
Costruisce un nuovo Unifier. |
Method Summary | |
void |
backtrack(Sexp list)
Esegue il backtracking sulla lista delle variabili list. |
protected boolean |
Contains(Sexp term,
Sexp var)
Controlla se lo specificato termine composto contiene la specificata variabile o un riferimento ad essa. |
protected Sexp |
deref(Sexp term)
Dereferenzia una variabile seguendo la catena di riferimenti nella tabella delle sostituzioni. |
java.lang.String |
getError()
Restituisce lo stato finale dopo una unificazione in formato di stringa. |
int |
getResult()
Restituisce lo stato finale dopo una unificazione. |
static void |
main(java.lang.String[] s)
Metodo main per il debug. |
protected int |
unification(Sexp a,
Sexp b)
Realizza un algoritmo per l'unificazione. |
Sexp |
unify(Sexp a,
Sexp b)
Prova ad unificare i due termini a e b. |
Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
Field Detail |
public boolean OCCUR_CHECK
Di default il suo valore è true.
Il suo valore può di default è false.
public static final int UNIFY
getResult()
public static final int DIFFERS
getResult()
public static final int OCCURS
getResult()
Constructor Detail |
public Unifier(SexpHashtable Substitution)
Substitution
- tabella delle sostituzioni che deve essere condivisa con l'EngineSexpVisitor.Method Detail |
public int getResult()
getError()
,
UNIFY
,
DIFFERS
,
OCCURS
public java.lang.String getError()
getResult()
public Sexp unify(Sexp a, Sexp b) throws InterpreterException
a
- primo termine.b
- secondo termine.public void backtrack(Sexp list) throws InterpreterException
list
- la lista delle variabili.protected int unification(Sexp a, Sexp b) throws InterpreterException
a
- Sexp che deve essere unificata con la Sexp passata tramite il
parametro b.b
- Sexp che deve essere unificata con la Sexp passata tramite il
parametro a.protected Sexp deref(Sexp term)
protected boolean Contains(Sexp term, Sexp var) throws InterpreterException
term
- termine composto su cui si effettua il controllo.var
- variabile su cui si effettua il controllo.public static void main(java.lang.String[] s)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |