Linguaggi e traduttori

Anno Accademico 2013/2014

Docente: Giovanni Pighizzini

Parser bottom-up

CUP
Constructor of Useful Parsers
Note relative all'installazione.

Esempio: espressioni aritmetiche
Gli esempi presentati svolgono compiti analoghi a quelli presentati per il parsing top-down. È stata utilizzata la versione 11a beta di CUP. In alcuni esempi viene inoltre utilzzata la classe EspressioneException del package lt2.calc.

Nota
L'analizzatore sintattico generato da CUP utilizza token prelevati dall'analizzatore lessicale da uno stream di input. La fine dello stream è indicata da un particolare token EOF. Nella maggior parte dei casi lo stream è un file di testo. Negli esempi precedenti, invece, l'input dell'applicazione è sempre una riga di testo a partire dalla quale, mediante l'uso di StringReader viene creato uno strem corrispondente a essa.
Forniamo un esempio in cui la lettura avviene da un file (lo standard input). Si tratta sempre di una calcolatrice (senza identificatori), in cui possono essere inserite più espressioni, una per riga. Si notino le modifiche al file di specifica sintattica, con una nuova variabile per trattare più righe di testo.

Ultimo aggiornamento: 10 giugno 2014
© Giovanni Pighizzini
Università degli Studi di Milano