Interpreter.Sexp
Class ConsSexp

java.lang.Object
  |
  +--Interpreter.Sexp.Sexp
        |
        +--Interpreter.Sexp.ConsSexp
Direct Known Subclasses:
ArgsSexp, TermSexp

public class ConsSexp
extends Sexp

Un oggetto ConsSexp è una S-expression non atomica. È costituita da una coppia di Sexp.


Field Summary
protected  Sexp head
          La prima Sexp della coppia di Sexp costituente la ConsSexp
protected  Sexp tail
          La seconda Sexp della coppia di Sexp costituente la ConsSexp
 
Fields inherited from class Interpreter.Sexp.Sexp
BEGIN_S, COUPLE_S, END_S, isAList, Lisp, nil, NIL_S, SEP_S, Separators
 
Constructor Summary
ConsSexp(Sexp h, Sexp t)
          Costruisce una nuova ConsSexp.
 
Method Summary
 void accept(SexpVisitor e)
          Accetta un SexpVisitor per la valutazione.
 Sexp append(Sexp Tail)
          Costruisce una concatenazione di Sexp.
 Sexp car()
          Restituisce la testa della ConsSexp.
 Sexp cdr()
          Restituisce la coda della ConsSexp.
 int count()
          Conta il numero di elementi della lista.
 boolean equals(java.lang.String s)
          Controlla se questa ConsSexp contiene un elemento la cui stringa rappresentativa è s.
 boolean isEq(Sexp s)
          Controlla se due ConsSexp sono uguali (identiche).
protected  Sexp reverse(Sexp Tail)
          Costruisce una lista invertita.
 boolean setIsAList(boolean newValue)
          Consente di modificare il valore della variabile isAList.
 java.lang.String toString()
          Restituisce la rappresentazione in forma di stringa.
 java.lang.String toString(java.lang.String[] s, boolean personal)
          Restituisce la rappresentazione in forma di stringa.
 java.lang.String toStringInList(java.lang.String[] s, boolean personal)
          Restituisce la rappresentazione in forma di stringa.
 
Methods inherited from class Interpreter.Sexp.Sexp
isAList, reverse
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

head

protected Sexp head
La prima Sexp della coppia di Sexp costituente la ConsSexp

tail

protected Sexp tail
La seconda Sexp della coppia di Sexp costituente la ConsSexp
Constructor Detail

ConsSexp

public ConsSexp(Sexp h,
                Sexp t)
Costruisce una nuova ConsSexp. Se il secondo parametro (ovvero t) è un NilSexp o una lista allora tale ConsSexp è intesa automaticamente come una lista, altrimenti è intesa come una coppia.
Parameters:
h - primo elemento costituente la ConsSexp;
t - secondo elemento costituente la ConsSexp;
Method Detail

setIsAList

public boolean setIsAList(boolean newValue)
Consente di modificare il valore della variabile isAList. Questo metodo deve essere usato per creare una coppia in cui il secondo elemento sia un NilSexp o una lista; infatti di default tale ConsSexp è considerata automaticamente una lista e non una coppia. Imponendo false la variabile isAList la ConsSexp verrà considerata come una coppia.
Parameters:
newValue - nuovo valore che assumerà la variabile isAList.
Returns:
il vecchio valore della variabile isAList.

car

public Sexp car()
Restituisce la testa della ConsSexp.
Returns:
il valore della variabile head.
Overrides:
car in class Sexp

cdr

public Sexp cdr()
Restituisce la coda della ConsSexp.
Returns:
il valore della variabile tail.
Overrides:
cdr in class Sexp

count

public int count()
Conta il numero di elementi della lista.
Overrides:
count in class Sexp

append

public Sexp append(Sexp Tail)
Costruisce una concatenazione di Sexp.
Parameters:
Tail - la lista da appendere a questa.
Returns:
la coda della Sexp.
Overrides:
append in class Sexp

reverse

protected Sexp reverse(Sexp Tail)
Costruisce una lista invertita.
Parameters:
Tail - la parte di lista già invertita: all'inizio dovrebbe essere nil.
Returns:
la lista invertita.
Overrides:
reverse in class Sexp

equals

public boolean equals(java.lang.String s)
Controlla se questa ConsSexp contiene un elemento la cui stringa rappresentativa è s.
Parameters:
s - la stringa da confrontare con il risultato di toString applicato a head e tail.
Returns:
true se questa ConsSexp contiene un elemento la cui stringa rappresentativa è s, altrimenti false.
Overrides:
equals in class Sexp

isEq

public boolean isEq(Sexp s)
Controlla se due ConsSexp sono uguali (identiche). Serve ad implementare la funzione di controllo di uguaglianza fra oggetti. Tale funzione è stata realizzata basandosi non sulla reale uguaglianza, ma sull'uguaglianza della stampa.
Parameters:
s - Sexp con cui si effettua il confronto di uguaglianza.
Returns:
true se le 2 Sexp sono uguali, altrimenti false.
Overrides:
isEq in class Sexp

toString

public java.lang.String toString()
Restituisce la rappresentazione in forma di stringa.
Returns:
la stringa rappresentativa dell'oggetto: una lista in formato lisp.
Overrides:
toString in class Sexp

toString

public java.lang.String toString(java.lang.String[] s,
                                 boolean personal)
Restituisce la rappresentazione in forma di stringa.
Parameters:
s - contiene un array di 5 stringhe separatrici (see Separators): nil, couple, sep, beginList, endList.
personal - se true permette di personalizzare la stampa della lista utilizzando le stringhe prese da Separators di ciascuna Sexp, oppure sep se Separators non è inizializzato. Nelle chiamate ricorsive a toStringInList() viene passato la lista corrente di separatori. Se false viene utilizzata sep in ogni caso.
Returns:
la stringa rappresentativa dell'oggetto.
Overrides:
toString in class Sexp
See Also:
Sexp.Separators

toStringInList

public java.lang.String toStringInList(java.lang.String[] s,
                                       boolean personal)
Restituisce la rappresentazione in forma di stringa. Viene usata all'interno di una lista.
Parameters:
s - contiene un array di 5 stringhe separatrici (see Separators): nil, couple, sep, beginList, endList.
personal - se true permette di personalizzare la stampa della lista utilizzando le stringhe prese da Separators di ciascuna Sexp, oppure sep se Separators non è inizializzato. Nelle chiamate ricorsive a toStringInList() viene passato la lista corrente di separatori. Se false viene utilizzata sep in ogni caso.
Returns:
la stringa rappresentativa dell'oggetto.
Overrides:
toStringInList in class Sexp
See Also:
Sexp.Separators

accept

public void accept(SexpVisitor e)
            throws InterpreterException
Accetta un SexpVisitor per la valutazione.
Parameters:
e - oggetto che realizza un Pattern Visitor per le Sexp.
Overrides:
accept in class Sexp


Codice realizzato da Francesco Geri & Marco Tamanti