|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Object
|
+--Interpreter.Sexp.Utils.SexpVisitor
|
+--Interpreter.LispInterpreter.EvalSexpVisitor
Un oggetto EvalSexpVisitor realizza un Pattern Visitor per una s-expression.
Valuta un'istruzione Scheme.
| Field Summary | |
protected IdentSexp |
closureIdent
Identificativo. |
protected SexpHashtable |
env
SexpHashtable globale usato per la valutazione. |
java.lang.String |
file
Nome del file letto dallo standard input tramite la primitiva file. |
protected Sexp |
localEnv
SexpHashtable locale usato per la valutazione. |
protected IdentSexp |
macroIdent
Identificativo. |
protected NilSexp |
nil
Identificativo. |
protected IdentSexp |
Set
Identificativo. |
boolean |
stop
Utilizzato per la sospensione della valutazione in corso. |
protected SpecialToken |
True
Identificativo. |
| Fields inherited from class Interpreter.Sexp.Utils.SexpVisitor |
stack |
| Constructor Summary | |
EvalSexpVisitor(InputBuffer In,
OutputBuffer Out,
Parser par)
Costruisce un nuovo EvalSexpVisitor. |
|
| Method Summary | |
protected boolean |
already(Sexp id,
IdentSexp primitive)
Controlla se esiste già un identificatore nell'environment. |
protected void |
apply(Sexp fun,
Sexp argList)
Applica un funtore alla sua lista di argomenti. Il funtore può essere una primitiva, una closure o una macro. |
protected void |
applyClosure(Sexp clos,
Sexp argList)
Applica una closure alla sua lista di argomenti. |
protected void |
applyMacro(Sexp macro,
Sexp argList)
Applica una macro alla sua lista di argomenti. |
protected void |
applyOperation(OperationToken operator,
Sexp argList)
Applica una primitiva di tipo OperationalSet alla sua lista di argomenti. |
protected boolean |
applyPrimitive(PrimitiveToken prim,
Sexp argList)
Applica una primitiva alla sua lista di argomenti. |
protected void |
applyRelation(RelationToken relator,
Sexp argList)
Applica una primitiva di tipo Relational alla sua lista di argomenti. |
protected Sexp |
assoc(Sexp vars,
Sexp vals,
boolean eval)
Data una lista di variabili ed una lista di valori da assegnare a tali variabili, costruisce una lista di coppie variabile-valore. |
protected Sexp |
cars(Sexp list)
Costruisce la lista dei car di ogni sottolista di una lista di liste. Il car di una lista è la testa della lista. |
protected Sexp |
cdrs(Sexp list)
Costruisce la lista dei car dei cdr di ogni sottolista di una lista di liste. |
protected int |
checkEvalArgs(Sexp argList)
Conta il numero di argomenti in argList e li valuta, ponendo ordinatamente sullo stack i risultati delle valutazioni. |
protected Sexp |
checknVals(Sexp Vars,
Sexp Vals,
boolean eval,
java.lang.String prim)
Data una lista di variabili ed una lista di valori da assegnare a tali variabili, costruisce una lista di coppie variabile-valore. |
void |
clearStackAndLocalEnv()
Riporta il visitor allo stato di partenza, senza svuotare il global environment. |
protected void |
ErrorMessage(PrimitiveToken prim,
Sexp argList)
Lancia una eccezione con un messaggio di errore. |
protected Sexp |
evalBackQuote(Sexp argList)
Applica la primitiva BackQuote (`) agli argomenti. |
protected void |
evalBody(Sexp body)
Esegue la valutazione di una lista di s-expression. |
protected void |
evalCond(Sexp condList)
Valuta il corpo di una istruzione cond. |
protected void |
evalSet()
Valuta una istruzione set prendendo il valore e la variabile dallo stack. |
protected void |
evalSetq(Sexp argList)
Valuta una istruzione setq. |
SexpHashtable |
getGlobalEnvironment()
Restituisce il global environment corrente. |
protected Sexp |
getValueFromLocalEnv(Sexp key,
Sexp localEnv)
Restituisce il valore corrispondente ad un identificatore presente in localEnv. |
protected Sexp |
listToCouple(Sexp argList)
Trasforma una lista di liste in una lista di coppie, valutando i secondi elementi. |
protected Sexp |
macroExpand(Sexp body)
Esegue il passo di espansione nelle macro. |
void |
reset()
Riporta il visitor allo stato di partenza. |
protected double |
RestOperation(OperationToken operator,
Sexp argList,
boolean isAdd)
Costruisce il secondo operando di una operazione trattando tutti gli operandi dal secondo in poi. |
void |
visit(ConsSexp e)
Effettua la visita di un ConsSexp, cioè valuta un ConsSexp. |
void |
visit(IdentSexp e)
Effettua la visita di un IdentSexp, cioè valuta un IdentSexp. |
void |
visit(NilSexp e)
Effettua la visita di un NilSexp, cioè valuta un NilSexp. |
| Methods inherited from class Interpreter.Sexp.Utils.SexpVisitor |
getResult,
getStack |
| Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
| Field Detail |
protected SexpHashtable env
protected IdentSexp Set
protected IdentSexp closureIdent
protected IdentSexp macroIdent
protected NilSexp nil
protected SpecialToken True
protected Sexp localEnv
public java.lang.String file
public boolean stop
| Constructor Detail |
public EvalSexpVisitor(InputBuffer In,
OutputBuffer Out,
Parser par)
In - oggetto InputBuffer su cui viene ridiretto lo standard input.Out - oggetto OutputBuffer su cui viene ridiretto lo standard output.par - Parser che effettua l'analisi sintattica della frase.| Method Detail |
public SexpHashtable getGlobalEnvironment()
public void reset()
public void clearStackAndLocalEnv()
public void visit(ConsSexp e)
throws InterpreterException
e - oggetto che viene visitato.
protected void apply(Sexp fun,
Sexp argList)
throws InterpreterException
fun - funtore da applicare alla lista di argomenti.argList - lista di argomenti a cui viene applicato il funtore.
protected boolean applyPrimitive(PrimitiveToken prim,
Sexp argList)
throws InterpreterException
prim - primitiva da applicare alla lista di argomenti.argList - lista di argomenti a cui viene applicata la primitiva.
protected int checkEvalArgs(Sexp argList)
throws InterpreterException
argList - lista degli argomenti.
protected void ErrorMessage(PrimitiveToken prim,
Sexp argList)
throws InterpreterException
prim - il nome della primitiva serve in caso di errore.argList - lista degli argomenti.
protected boolean already(Sexp id,
IdentSexp primitive)
throws InterpreterException
id - contiene il nome dell'identificatore.primitive - contiene la primitiva che invoca il presente metodo.
return true se ha trovato l'identificatore in env, altrimenti false.
protected Sexp getValueFromLocalEnv(Sexp key,
Sexp localEnv)
throws InterpreterException
key - identificatore.localEnv - una lista di liste in cui cercare la chiave key.
protected Sexp listToCouple(Sexp argList)
throws InterpreterException
argList - una lista di liste.
protected Sexp cars(Sexp list)
throws InterpreterException
list - una lista di liste.
protected Sexp cdrs(Sexp list)
throws InterpreterException
list - una lista di liste.
protected void evalCond(Sexp condList)
throws InterpreterException
condList - lista contenente le ConsSexp da valutare.
protected void evalSet()
throws InterpreterException
protected void evalSetq(Sexp argList)
throws InterpreterException
argList - lista alternata di variabili e dei valori
protected void applyOperation(OperationToken operator,
Sexp argList)
throws InterpreterException
operator - primitiva di tipo OperationalSet da applicare alla lista di argomenti.argList - lista di argomenti a cui viene applicata la primitiva di tipo OperationalSet.
protected double RestOperation(OperationToken operator,
Sexp argList,
boolean isAdd)
throws InterpreterException
operator - operazione primitiva da applicare alla lista di argomenti.argList - lista di argomenti a cui viene applicata l'operazione primitiva.isAdd - indica se l'operazione di addizione (comprende anche la sottrazione)
o di moltiplicazione (comprende anche la divisione).
protected void applyRelation(RelationToken relator,
Sexp argList)
throws InterpreterException
prim - primitiva di tipo Relational da applicare alla lista di argomenti.argList - lista di argomenti a cui viene applicata la primitiva di tipo
Relational.
protected void applyClosure(Sexp clos,
Sexp argList)
throws InterpreterException
clos - closure da applicare alla lista di argomenti.argList - lista di argomenti a cui viene applicata la closure.
protected void applyMacro(Sexp macro,
Sexp argList)
throws InterpreterException
macro - macro da applicare alla lista di argomenti.argList - lista di argomenti a cui viene applicata la macro.
protected void evalBody(Sexp body)
throws InterpreterException
body - la lista da valutare.
protected Sexp macroExpand(Sexp body)
throws InterpreterException
body - la lista da espandere.
protected Sexp checknVals(Sexp Vars,
Sexp Vals,
boolean eval,
java.lang.String prim)
throws InterpreterException
Vars - lista delle variabili.Vals - lista dei valori.prim - nome della primitiva a cui devono essere applicati i bindings.
protected Sexp assoc(Sexp vars,
Sexp vals,
boolean eval)
throws InterpreterException
vars - lista delle variabili che devono essere IdentToken.vals - lista dei valori.
protected Sexp evalBackQuote(Sexp argList)
throws InterpreterException
argList - lista degli argomenti
return risultato della valutazione
public void visit(IdentSexp e)
throws InterpreterException
e - oggetto che viene visitato.
public void visit(NilSexp e)
throws InterpreterException
e - oggetto che viene visitato.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||