Ciao a tutti volevo un aiuto su un programma che sto realizzando per il progetto di programmazione. Le basi della programmazione ad oggetti credo di possederle. Qualcuno sa darmi una mano?
Questo è il testo:


Realizzare il tipo Pila con elementi di tipo Object e le operazioni push, pop
ed empty. Utilizzando il tipo Pila, realizzare un automa a pila non deterministico
che accetti grammatiche nella Forma Normale di Greibach. La specifica
della grammatica è memorizzato in un file il cui formato in BNF é il seguente:
<Grammatica> ::= {<Produzione>n}*
<Produzione> ::= <NonTerminale>b->b<Terminale>b{<NonTerminale>b}*
<NonTerminale> ::= <Carattere><Carattere>
<Carattere> ::= A | ... | Z
<Terminale> ::= <Stringa>
Le stringhe di terminali (token) devono essere tutte distinte. La stringa (token)
ha lunghezza minima pari a 1 e non contiene spazi. I caratteri ’n’ e ’b’ sono
rispettivamente il carattere di nuova riga e lo spazio. Le stringhe di terminali
(token) non possono essere tra di loro sottrostringhe. E’ desiderabile che venga
effettuato un’analisi sintattica del file contenente la grammatica per verificarne
la congruitá. Il generatore di parser di nome GNF ha come parametri sulla riga
di comando un file con la specifica della grammatica e un file con il testo da
analizzare e produce come risultato l’accettazione o il rifiuto. Nel caso del rifiuto
produce il numero di riga dove si è verificato l’errore di riconoscimento. Ogni
modulo di programma deve avere il commento documentale /** author */ con
gli autori del progetto.

Avevo pensato di realizzare 4 classi: il main, la pila, un'altra pila per il controllo dell'errore e infine uno per la gestione dell'input di stringhe.
Datemi una mano anche se non so proprio come iniziare...

Grazie in anticipo per la considerazione. Un saluto.