Divagazioni
Von: Il Razziatore (ilrazziatore@gmail.com) [Profil]
Datum: 07.04.2008 04:18
Message-ID: <47f98506$0$4793$4fafbaef@reader4.news.tin.it>
Newsgroup: it.comp.lang.pascal
Datum: 07.04.2008 04:18
Message-ID: <47f98506$0$4793$4fafbaef@reader4.news.tin.it>
Newsgroup: it.comp.lang.pascal
Salve a tutti, ho fatto un parser ( <47aa7e6d$0$10626$4fafbaef@reader2.news.tin.it> ), ho fatto il Pascal Collection Framework ( <47d3260d$0$10627$4fafbaef@reader2.news.tin.it> ) tutto questo in previsione di questo momento, ora è venuto il momento di inizare a scrivere il mio ( e forse anche vorsto ) compilatore Pascal. Analiziamo il problema insieme. Cose'è un compilatore? Un compilatore è qualcosa che prende un programma e genera un eseguibile. Okay. Per fere questo ho bisogno di un parser ( e c'è l'ho ). A sto punto la domanda diventa "Un programma pascal com'è fatto?". E' una lista di istruzioni incapsulate da un blocco begin-end. quindi abbiamo un qualcosa del genere begin istruzione_1; istruzione_2; ... istruzione_n; end. bene prendiamo per semplificità che un istruzione o è un identificatore oppure è un blocco begin-end ( dove un blocco begin end ha la seguente struttra: begin istruzione_1; istruzione_2; ... istruzione_n; end okay. Io ho pensato di gestire il tutto in questo modo ( e veniamo alla domandona ). Io faccio una lista ( TLinkedList ) di un oggetto ( TStatament ) dove ogni blocco funzionale del pascal ( Begin-end, if-then-else, ecc ecc ) è una classe che erdita da TStetament con metodi particolari. Ad esempio il blocco begin end potrebbe avere un metodo per aggiungere altre istruzioni al blocco: block.addStatament( statament ); mentre ovviamente le istruzioni semplici non hanno bisogno di altri metodi particolari. Il programma nel suo complesso diventerebbe un unico blocco Begin-End e quindi mi basterebbe creare un blocco quando trovo il begin iniziale poi piano piano che trovo un identificatore ( un istruzione ) lo aggiungo al blocco e se trovo "begin" credo un altro blocco e ricomicio, finche non trovo un end e a quel punto aggiungo il blocco n al blocco n-1. Voi vi stareste domandando ( ma che vuole questo da me? ) ecco: Secondo voi tutto questo discorso è sensato? Ma sopratutto come gestireste i vari blocchi... stavo pensando di usare uno stack se avete commenti sarei felice di sentrili... -- Il Razziatore, "Lo sviluppo di una nazione si misura anche dallo stato della sua rete ferroviaria". Camillo Benso Conte di Cavour "Per tutto quanto non previsto nel presente regolamento il capostazione deve usare senno e ponderatezza." Regolamento d'esercizio FS ----------------------------------------------- MSN : IlRazziatore@netscape.net ICQ : 67552596 Yhaoo : Razziatore82 ----------------------------------------------- Founder of MediaPlayer Project http://mpp.iwebland.com[ Auf dieses Posting antworten ]
