xyz ha scritto:Lo stack non è vietato usarlo in un linguaggio OO compresa una sua implementazione con classi.
Quindi (questa cosa non mi fa dormire) cerco di pensare ad oggetti e non a funzioni.
Tutto parte da un sorgente ASCII che e' l' oggetto base. Bisogna quindi capire se questo oggetto e' veramente un programma verificando la correttezza della sintassi, quindi in effetti
l' oggetto e' il programma e su questo bisogna lavorare.
Quando si crea l' oggetto della classe "programma" questi e' vuoto e quindi ci deve essere un metodo che inserisca una stringa tipo
MioProgramma.setSourceString(String s).
Poi ci sara' un metodo che mi dira' se il sorgente e' sintatticamente corretto MioProgramma.isCorrect() che ritorna un vero o falso.
E qui l' analizzatore sintattico ha fatto il suo lavoro, quindi e' interno all' oggetto programma.
Gli sviluppi futuri possono essere, ad esempio nel caso di un editor:
- un metodo per avere la lista degli identificatori, il che e' utile per navigare attraverso il sorgente.
- Un metodo per avere una stringa RTF con i simboli colorati.
- Un meotodo per ottenere il primo errore di sintassi in modo da visualizzarlo quando si edita.
- Altre ed eventuali.
- Se vogliamo fare i fighi un metodo per caricare un file da disco passandogli il nome completo del file.
E se bisognera' compilarlo (da analisi a sintesi il passo e' breve ... OK sto divagando

):
- Un metodo per avere, chesso', un sorgente in assembler.
- Un file di cross reference
- e cosi' via.
Le funzioni di lettura simboli e loro interpretazione restano cose che interessano solo l' oggetto, quindi possono essere implementate nel modo tradizionale all' interno della classe.
Mi pare sia l' approccio giusto.
Spero.
xyz ha scritto: o altri basta cercare.
Sapessi cosa e (piu' o meno) dove cercare lo farei, ma non ho ancora le idee chiare

, quindi ti ringrazio per i links.

"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.