Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563

    C++ - Creare un compilatore per un nuovo linguaggio

    Mi frulla questa idea da un po di tempo.
    Ovviamente non ho in mente niente di serio, ma sapendo che alcuni linguaggi discendono dal C++, come si crea un piccolo compilatore che esegue semplici comandi, tipo print,qualche calcolo, dichiarare una variabile e quant'altro?
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  2. #2
    dipende. lo vuoi fare Compilato o interpretato?

    Se compilato lascia stare...... dovresti studiarti la struttura di un PE (Portable Executable) per creare il tuo exe finale.

    Se interpretato è più fattibile, in quanto ti crei un programma "base" uguale per tutti i programmi che "legge" uno script che corrisponde al codice inserito dall'utente ed agire di seguito. Dovresti crearti quindi 1)Un parser 2)Il programma base che legge lo script.


  3. #3
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Devi prima creare la grammatica del tuo linguaggio.
    Se nn arro, ad esempio, nel K&R, in fondo, trovi quella del C, cosi gli dai un'occhiata.

    Una volta che hai definito la grammatica passi a creare tutti i vari componenti (lettura sorgente, parsing, ...).

    A noi lo hanno fatto fare all'uni. E funzionava pure!
    Un solo tipo di dato, operazioni matematiche elementari, ...
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  4. #4
    Originariamente inviato da gygabyte017
    dipende. lo vuoi fare Compilato o interpretato?

    Se compilato lascia stare...... dovresti studiarti la struttura di un PE (Portable Executable) per creare il tuo exe finale.

    Se interpretato è più fattibile, in quanto ti crei un programma "base" uguale per tutti i programmi che "legge" uno script che corrisponde al codice inserito dall'utente ed agire di seguito. Dovresti crearti quindi 1)Un parser 2)Il programma base che legge lo script.

    In effetti la differenza tra compilato e bytecode non risiede tanto nella struttura del PE ma nel fatto che nel primo devi maneggiare l'Assembly mentre nel secondo puoi scegliere un codice più adatto alle tue conoscenze . Ovviamente le controindicazioni a questo genere di approccio sono essenzialmente due : taglia del codice e velocità di esecuzione , che nel caso del bytecode saranno per forza di cose maggiori di uno compilato , in quanto si tratterà pur sempre di un codice interpretato .

  5. #5
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Bhe a me non interessa compilato o interpretato, voglio solo capire un po la dinamica del compilatore.
    Un parser è quindi un programma che converte un file con delle scritte in un codice consono al compilatore...
    Come posso procedere per passi?

    Se volessi fare invece un linguaggio compilato, non potrei fare una traduzione di un prog scritto nel mio linguaggio in linguaggio C++ e farlo compilare? In teoria otterrei un exe...
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  6. #6
    Originariamente inviato da XWolverineX
    Se volessi fare invece un linguaggio compilato, non potrei fare una traduzione di un prog scritto nel mio linguaggio in linguaggio C++ e farlo compilare? In teoria otterrei un exe...
    In teoria si...

  7. #7
    Originariamente inviato da XWolverineX
    Bhe a me non interessa compilato o interpretato, voglio solo capire un po la dinamica del compilatore.
    Un parser è quindi un programma che converte un file con delle scritte in un codice consono al compilatore...
    Come posso procedere per passi?
    A grandi linee un compilatore ha la seguente struttura :
    Programma Sorgente-->Scanner<-->Parser-->Routine Semantica-->Generazione del Codice-->Programma Oggetto

    Scanner arte del compilatore che si incarica di scandire il testo.
    Interagisce con il Parser qualora quest'ultimo ha bisogno di analizzare il sorgente .
    Parser :assolve la funzione di riconoscere una struttura in un file sorgente . Una volta riconosciuta la "da in pasto" alla corrispondente Routine Semantica .
    Routine Semantica :si occupa di verificare la struttura passatagli dal parser , verificarne la correttezza semantica ed immagazzinare le necessarie informazioni in apposite tavole .
    Generazione del Codice : è la parte finale del processo di compilazione . Qui il programma tradotto in forma interna viene trasformato nel file oggetto , vengono fatte le dovute ottimizzazioni e i vari linkaggi delle librerie .

    Originariamente inviato da XWolverineX

    Se volessi fare invece un linguaggio compilato, non potrei fare una traduzione di un prog scritto nel mio linguaggio in linguaggio C++ e farlo compilare? In teoria otterrei un exe...
    Certamente . In questo caso si parla di traduttore . Come esempio puoi vedere il linguaggio BCX che riceve in input un sorgente in Basic BCX e restituisce in uscita un sorgente C che puo' essere compilato con diversi compilatori C .

  8. #8
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Grazie mille per lo schema, adesso la situazione è piu' chiara.
    Rimane comunque il fatto che io non sappia fare niente di tutto ciò. Forse è un progetto esagerato??
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da XWolverineX
    Grazie mille per lo schema, adesso la situazione è piu' chiara.
    Rimane comunque il fatto che io non sappia fare niente di tutto ciò. Forse è un progetto esagerato??
    Sì ... anche avendo molta esperienza, è un progetto molto complesso.

    Fai un po' tu ...

  10. #10
    Mmm mmm creare un compilatore giusto?
    Comincia a studiarti gli opcode dei processori, poi ne riparliamo
    Carmine,
    http://www.thetotalsite.it - Informatica, elettronica, programmazione e molto altro...
    http://blog.thetotalsite.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.