|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2008
Messaggi: 42
|
[Java] creare un compilatore
C'è qualcuno che sappia spiegarmi come creare un compilatore?
Io cercando un po' ho trovato il codice per modificare i file, ma non capisco come devono diventare i file una volta compilati. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Un qualsiasi compilatore poggia su una montagna di teoria... Qual è il tuo background culturale in merito?
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jun 2008
Messaggi: 42
|
Io credo di poterci riuscire, in quanto conosco gia abbastanza (credo) di java ed imparo in fretta.
|
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
dipende moltissimo anche dal linguaggio che devi compilare: per esempio, credo che non riusciresti mai a creare un compilatore C++, mentre un compilatore Python è già più possibile; un compilatore Brainfuck invece è una cazzata
poi devi anche decidere se vuoi tradurre il linguaggio in bytecode o se vuoi creare un vero file eseguibile: nel qual caso non hai più carta bianca, ma devi creare un vero e proprio linker seguendo le specifiche del formato PE/COFF. per quanto riguarda il "come"... è vero che c'è molta teoria dietro, ma è anche vero che si tratta di un programma come un altro: un compilatore non fa altro che... leggere dei files e scriverne un altro. solo che è un programma estremamente complesso dal punto di vista algoritmico. |
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Jun 2008
Messaggi: 42
|
Quote:
Non so quanto voi ve ne intendiate, ma comunque si creano 2 file, il file *.jad che è semplicissimo ed ho gia capito come va creato. Poi c'è il file *.jar che è un archivio apribile con winrar e contiene tutti i file compilati (*.class) e i possibili file aggiuntivi (*png, *.avi, ecc.). Quindi dovrebbe bastare sapere come si creano i file *.class ed il file *.jar. |
|
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
"non so quanto voi ve ne intendiate" detta da te è bellissima
![]() a parte il fatto che se tu volessi essere del tutto esaustivo creare il jar potrebbe non essere così semplice in quanto dovresti studiare un algoritmo di compressione; ma poi quello è l'ultimissimo dei problemi: i files class come li generi? sono in bytecode, devi generare il bytecode facendo il parsing del codice Java, e Java non è un linguaggio semplicissimo. non è un problema di tecnica, è un problema prevalentemente algoritmico: un compilatore è un programma complesso. per il resto non sto assolutamente dicendo che dovresti desistere: se vuoi scrivere un compilatore Java in Java comincia subito e buon lavoro qual è il problema? |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
Quote:
A parte tutto ma cosa hanno di male le vm della Sun? E cmq se proprio ti riferisci ad un compilatore c'è già un gran progetto,puoi aggregarti: http://gcc.gnu.org/java/
__________________
Khelidan |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
sai cos'è una grammatica?
__________________
My gaming placement |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Wien
Messaggi: 435
|
L'idea di partire subito costruendo un compilatore per un linguaggio ad oggetti è malsana. Parti da un linguaggio imperativo, fai una versione personalizzata di C o Pascal.
Sembra una cavolata, ma fidati che non lo è.
__________________
"Sono 126 miglia per Chicago. Abbiamo il serbatoio pieno, mezzo pacchetto di sigarette, è buio, e portiamo tutt'e due gli occhiali da sole" |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Meglio: comincia da un interprete per espressioni tipo:
3 * (10 + 15) / 5 poi aggiungi la possibilità di definire variabili: a = 10 b = 15 c = 5 3 * (a + b) / 5 poi se vedi che ti piace, vai avanti con cose più complesse...
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Se poi usa lo strumento giusto è anche meglio.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:09.




















