Interpreter.Sexp
Class Sexp

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

public abstract class Sexp
extends java.lang.Object

Un oggetto Sexp è una S-expression.


Field Summary
static int BEGIN_S
          Costante che serve per indirizzare la stringa corrispondente all'inizio di una lista all'interno dell'array sep nel metodo toString(String[] sep).
static int COUPLE_S
          Costante che serve per indirizzare la stringa corrispondente al separatore di coppia all'interno dell'array sep nel metodo toString(String[] sep).
static int END_S
          Costante che serve per indirizzare la stringa corrispondente alla fine di una lista all'interno dell'array sep nel metodo toString(String[] sep).
protected  boolean isAList
          true se la Sexp è una lista, false altrimenti.
static java.lang.String[] Lisp
          Costante che si può utilizzare con as(String[] separators).
static NilSexp nil
          Definisce una costante di uso comune, essenziale nella costruzione di Sexp: è la S-expession nulla.
static int NIL_S
          Costante che serve per indirizzare la stringa corrispondente al nil all'interno dell'array sep nel metodo toString(String[] sep).
static int SEP_S
          Costante che serve per indirizzare la stringa corrispondente al separatore tra gli elementi all'interno dell'array sep nel metodo toString(String[] sep).
protected  java.lang.String[] Separators
          Contiene 5 separatori per la stampa della lista.
 
Constructor Summary
Sexp()
           
 
Method Summary
abstract  void accept(SexpVisitor e)
          Accetta un SexpVisitor per la valutazione.
abstract  Sexp append(Sexp Tail)
          Costruisce una concatenazione di Sexp.
abstract  Sexp car()
          Restituisce la testa della Sexp.
abstract  Sexp cdr()
          Restituisce la coda della Sexp.
abstract  int count()
          Conta il numero di elementi di una lista.
abstract  boolean equals(java.lang.String s)
          Controlla se la stringa contenuta in questa Sexp è uguale a s.
 boolean isAList()
          Specifica se l'oggetto è una lista.
 boolean isEq(Sexp s)
          Controlla se due oggetti Sexp sono uguali (identici).
 Sexp reverse()
          Costruisce una lista invertita.
protected abstract  Sexp reverse(Sexp Tail)
          Costruisce una lista invertita.
abstract  java.lang.String toString()
          Restituisce la rappresentazione in forma di stringa in formato lisp.
abstract  java.lang.String toString(java.lang.String[] sep, boolean personal)
          Restituisce la rappresentazione in forma di stringa utilizzando i separatori presi da Separators.
abstract  java.lang.String toStringInList(java.lang.String[] sep, boolean personal)
          Restituisce la rappresentazione in forma di stringa.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

nil

public static NilSexp nil
Definisce una costante di uso comune, essenziale nella costruzione di Sexp: è la S-expession nulla.

Separators

protected java.lang.String[] Separators
Contiene 5 separatori per la stampa della lista. I valori di default sono presi dalla costante Lisp. Normalmente vengono stampati i valori di default, altrimenti i valori contenuti in Separators se si chiama il metodo toString(sep,true).
See Also:
toString(String[],boolean)

NIL_S

public static final int NIL_S
Costante che serve per indirizzare la stringa corrispondente al nil all'interno dell'array sep nel metodo toString(String[] sep). Default: "".
See Also:
Separators

COUPLE_S

public static final int COUPLE_S
Costante che serve per indirizzare la stringa corrispondente al separatore di coppia all'interno dell'array sep nel metodo toString(String[] sep). Default: " . ".
See Also:
Separators

SEP_S

public static final int SEP_S
Costante che serve per indirizzare la stringa corrispondente al separatore tra gli elementi all'interno dell'array sep nel metodo toString(String[] sep). Default: " ".
See Also:
Separators

BEGIN_S

public static final int BEGIN_S
Costante che serve per indirizzare la stringa corrispondente all'inizio di una lista all'interno dell'array sep nel metodo toString(String[] sep). Default: "(".
See Also:
Separators

END_S

public static final int END_S
Costante che serve per indirizzare la stringa corrispondente alla fine di una lista all'interno dell'array sep nel metodo toString(String[] sep). Default: ")".
See Also:
Separators

Lisp

public static final java.lang.String[] Lisp
Costante che si può utilizzare con as(String[] separators). Contiene l'elenco di separatori per stampare una stringa in formato lisp.
See Also:
Separators

isAList

protected boolean isAList
true se la Sexp è una lista, false altrimenti.
Constructor Detail

Sexp

public Sexp()
Method Detail

isAList

public boolean isAList()
Specifica se l'oggetto è una lista.
Returns:
true se si tratta di una lista, false altrimenti.

car

public abstract Sexp car()
                  throws InterpreterException
Restituisce la testa della Sexp. Se la Sexp è atomica restituisce una eccezione.
Returns:
la testa della Sexp.

cdr

public abstract Sexp cdr()
                  throws InterpreterException
Restituisce la coda della Sexp. Se la Sexp è atomica restituisce una eccezione.
Returns:
la coda della Sexp.

count

public abstract int count()
Conta il numero di elementi di una lista.
Returns:
il numero di elementi di una lista.

append

public abstract Sexp append(Sexp Tail)
Costruisce una concatenazione di Sexp.
Parameters:
Tail - la lista da appendere a questa.
Returns:
la lista risultante dopo la concatenazione di Tail a questa Sexp.

reverse

public Sexp reverse()
Costruisce una lista invertita.
Returns:
la lista invertita.

reverse

protected abstract 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.

equals

public abstract boolean equals(java.lang.String s)
Controlla se la stringa contenuta in questa Sexp è uguale a s. Viene definita qui per evitare numerosi cast.
Parameters:
s - la stringa da confrontare con il risultato di toString applicato a questa Sexp.
Returns:
true se la stringa è la stessa, altrimenti false.

isEq

public boolean isEq(Sexp s)
Controlla se due oggetti Sexp sono uguali (identici). 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.

toString

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

toString

public abstract java.lang.String toString(java.lang.String[] sep,
                                          boolean personal)
Restituisce la rappresentazione in forma di stringa utilizzando i separatori presi da Separators.
Parameters:
sep - contiene un array di 5 separatori: 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.
See Also:
Separators

toStringInList

public abstract java.lang.String toStringInList(java.lang.String[] sep,
                                                boolean personal)
Restituisce la rappresentazione in forma di stringa. Viene usata all'interno di una lista.
Parameters:
sep - contiene un array di 5 stringhe separatrici: 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.
See Also:
Separators

accept

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


Codice realizzato da Francesco Geri & Marco Tamanti