|
|||||||||
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 valoriprotected 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 valutazionepublic 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 |