nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

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
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 ]