Newsgroup: it.comp.programmare
Titolo: sviluppare un compilatore

Salve a tutti, a scopo didattico vorrei iniziare un progetto di cui non mi
sento propriamente all'altezza: realizzare un compilatore C. Chiedo dunque
l'aiuto di chiunque abbia delle esperienze in tale ambito e possa guidarmi
in questa ardua impresa.
Se questo qualcuno c'è, e ha del tempo da dedicarmi, oppure se qualche
studente non troppo esperto vuole partecipare per imparare qualcosa insieme
a me, mi faccia sapere, gliene sarò infinitamente grato!
Ciao!
Paolo.

Diciamo che sarebbe meglio che questo qualcuno postasse link a risorse
utili....anche io sono interessato ad argomenti di questo tipo.


Personalmente, credo che programmare un compilatore c realmente funzionante,
sia difficile quanto scrivere un sistema operativo. Non č impossibile, ma č
un impresa titanica, non ti converrebbe iniziare con qualcosa di piů
semplice? Magari un interpetre di script, o cose simili. Giusto per
iniziare.

 in questa ardua impresa.
Puoi sempre dare un'occhiata ai sorgenti del gcc.
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it

Ma come lo scrivi un compilatore C .............?
in ................C   .........? 
Credo che se vuoi fare le cose all'antica ti tocca l'Assembler
............zzi tuoi 
Se vuoi fare il furbo scrivilo in "C" fagli generare codice 
Assembler ............ dagli una ripulita  (mettici qualche commento)
Se riesci a inplementare lo <stdio.h> in meno 2 mesi sei un genio 
saluti

 Se riesci a inplementare lo <stdio.h> in meno 2 mesi sei un genio
E' una sfida? :)
Comunque per adesso ho gli esami di maturità... se ne riparla fra un
mesetto.
Ciao,
Paolo.

Paolo ha scritto:
Scusa, ma che conoscenze hai di programmazione?
E che compilatore vuoi fare? Uno che gestisce solo input, output e qualche 
variabile, o qualcosa di molto potente?
ciao
-- 
Luigi
--
bug windows [5] = {"95", "98", "NT", "Me", "2000"};

 
-- 



Perchč l'assembler? Non č indispensabile, volendo se ne potrebbe scrivere
uno anche in basic, se non fosse cosě scomodo. La soluzione migliore č
scriverlo in C++.

 variabile, o qualcosa di molto potente?
Pensavo ad un compilatore C con il minimo indispensabile. L'input e l'output
potrei gestirli con l'inline assembler, tramite i quali realizzare librerie
tipo stdio...
Il linguaggio di sviluppo credo sarà il C++.
Ciao,
Paolo.

Spesso i compilatori C piu' semplici traducono il programma in codice
assembler e lo lasciano compilare cosi' come e'.
Un buon punto di partenza credo che sia il programma Small C di James
Hendrix. Consiste in un mini compilatore C scritto esso stesso in Small C e
quindi autocompilabile. Puoi cercarlo con un motore di ricerca perche'
purtroppo non mi ricordo l' indirizzo.
Se proprio non lo trovi e ti interessa te lo posso spedire io, ma per favore
PRIMA CERCA BENE!
Un altro programmino interessante e' il Quincy C Interpreter (inseriscilo
cosi' in un motore di ricerca e lo troverai), un interprete di programmi C
con un ambiente di sviluppo simile al QBASIC; non compila, ma fa partire i
programmi direttamente senza bisogno di salvare files su hard disk.
E' scritto in Borland C++ e sono disponibili i sorgenti.
p.s. esistono anche un interprete ed un compilatore per il linguaggio BASIC
scritti in Quick Basic,  rispettivamente CCBASIC (Cheesecake Basic) e
GaBasic (GBSOURCE.ZIP)
"Paolo" <capao...@Mlibero.it> ha scritto nel messaggio
news:gwxO6.9614$h9.8...@news.infostrada.it...


in questa ardua impresa.
Ti conviene rifarti dalla lettura del libro:
"Compilewrs : principals ,techniques and tools " Aho, Ed. Addison
E procurarti Flex (un generatore di scanner) e Yacc (o Bison ) un
generatore di Parser. 
Augusto Pucci ( 
http://www.prospektiva.it/webmaster/
 )
Webmaster di Prospektiva On-line
http://www.prospektiva.it
Webmaster di SIPO Toscana
http://sipotoscana.supereva.it

 assembler e lo lasciano compilare cosi' come e'.
[...]
Grazie Angelo, vado subito a cercare i programmi che mi hai consigliato!
Ciao,
Paolo.

 generatore di Parser.
Questi ce l'ho! E grazie a loro in mezza giornata sono riuscito a realizzare
un interprete per un (ridottissimo) subset del PHP.
Ho dato un'occhiata al codice che generano... e non ci ho capito
praticamente niente. Sai mica cosa sono quegli array assurdi pieni di
numeri??
Ciao e grazie!
Paolo.

numeri??
Dovrebbero essere i codici numerici assegnati ai simboli non
terminali..ad esempio quando lo scanner trova un valore numerico passa
al parser non il valore stesso ma un codice.. in altre parole quello
che fa lo scanner e' uralre al parser "Ehi ho trovato un numero... se
vuoi sapere qaul'e' vattelo a prendere in atbella" oppure "Ehi ho
trovato un IF"
Al resto ci pensa il apreser in un valzer di chiamate dello scanner e
letture della tavola dei simboli.
Gli array a cui ti riferisci dovrebbero essere questo.
Comquneu e' in teoria possibile definire personalmente tali codici..ma
e' meglio che li assegni il Flex da solo..a proposito se ti interessa
esiste anche il JFlex che e' come il Flex ma genera una classe Java
invece del codice C..generalmentegli scanner generati dal nostreo
amico JFlex sono piu' leggibili..
