All Packages Class Hierarchy This Package Previous Next Index
Class it.unipi.di.compiler.parser.ParseNode
java.lang.Object
|
+----it.unipi.di.compiler.parser.ParseNode
- public abstract class ParseNode
- extends Object
Classe base che rappresenta un nodo nell'albero di sintassi
astratta. Questa classe è il cuore per realizzare il
parser, infatti attraverso la definizione del metodo parse
si può specializzare il parsing di un simbolo della
grammatica. Il tokenizer decide di quanti simboli è
possibile fare il lookahead. Attraverso l'ereditarietà
è poi possibile discriminare i vari tipi di nodi, come
ad esempio gli statement e le espressioni. Ad esempio in
un linguaggio like-C potremmo avere:
public abstract class Expr extends ParseNode {
...
}
public abstract class Stat extends ParseNode {
...
}
public class ifStatement extends Stat {
...
}
public class addExpr extends Expr {
...
}
Inoltre è possibile fornire metodi ai vari nodi
per la valutazione. In questo modo è possibile realizzare
con semplicità interpreti. L'uso di interfacce o
di specializzazione di questa classe permette anche di
associare dei metodi di generazione del codice intermedio
del compilatore.
- Version:
- 1.1
- Author:
- Antonio Cisternino
- See Also:
- Parser
-
ParseNode()
-
-
match(Tokenizer)
- Controlla se i prossimi simboli possono appartenere al simbolo
che il nodo sa controllare.
-
parse(Tokenizer)
- Questo metodo effettua il parse per il nodo corrente.
-
skipTokens(Tokenizer, int)
- Scarta i token del Tokenizer finché non ne trova uno
particolare.
-
skipTokens(Tokenizer, String)
- Scarta i token del Tokenizer finché non ne trova uno
particolare.
ParseNode
public ParseNode()
parse
protected abstract void parse(Tokenizer t) throws ParserException, IOException
- Questo metodo effettua il parse per il nodo corrente.
- Throws: ParserException
- Segnala eventuali errori di
sintassi.
- Throws: IOException
- Segnala eventuali errori nella
lettura dello stream di input.
match
public static boolean match(Tokenizer t) throws IOException
- Controlla se i prossimi simboli possono appartenere al simbolo
che il nodo sa controllare. Questo metodo deve lasciare
immutato il Tokenizer. L'implementazione di default
restituisce sempre false.
- Parameters:
- t - Tokenizer su cui fare il lookahead.
- Returns:
- true se è stato riconosciuto il simbolo da
parsare, false altrimenti.
- Throws: IOException
- Segnala eventuali errori nella
lettura dello stream di input.
skipTokens
public boolean skipTokens(Tokenizer t,
int keyword) throws IOException
- Scarta i token del Tokenizer finché non ne trova uno
particolare. Il token trovato viene reinserito nel tokenizer
pronto per essere estratto.
- Parameters:
- t - Tokenizer da cui estrarre i token.
- keyword - Identificativo della keyword da cercare.
- Returns:
- Restituisce true se la keyword è stata trovata,
false se la fine del file è stata raggiunta.
skipTokens
public boolean skipTokens(Tokenizer t,
String token) throws IOException
- Scarta i token del Tokenizer finché non ne trova uno
particolare. Il token trovato viene reinserito nel tokenizer
pronto per essere estratto.
- Parameters:
- t - Tokenizer da cui estrarre i token.
- token - (non keyword) da cercare.
- Returns:
- Restituisce true se il token non è stato
trovato, false se la fine del file è stata
raggiunta.
- Throws: IOException
- Errore di lettura dallo stream.
All Packages Class Hierarchy This Package Previous Next Index