2010-09-11 8 views
7

Ok, immagino che questa domanda sia stata posta molte volte qui.Creazione di linguaggi di programmazione e progettazione del compilatore. Sono collegati?

Voglio creare un linguaggio di programmazione, non necessariamente a partire da oggi, ma nell'arco di 2-3 anni. Non sono un ottimo programmatore, ma sto migliorando. Quello che volevo chiedere è quanto sia strettamente legato alla creazione di un linguaggio e alla scrittura di un compilatore?

Dal momento che un compilatore traduce una lingua da una forma all'altra, credo che si tratti di scrivere un compilatore per una particolare parte di testo. COSÌ, se imparo il design del compilatore, sarò in grado di scrivere il mio linguaggio di programmazione?

risposta

4

È possibile progettare un linguaggio di programmazione senza sapere nulla sull'implementazione dei compilatori e viceversa. Il designer del linguaggio può scrivere una specifica per la lingua e un implementatore del compilatore può quindi prenderlo e creare il compilatore.

Tuttavia, se si tratta di un progetto personale, probabilmente sarà necessario imparare come eseguire entrambe le operazioni. Un linguaggio di programmazione per il quale non esiste un compilatore è puramente teorico, ed è difficile capire quanto sia buono un linguaggio di programmazione senza scrivere ed eseguire programmi reali con esso. Anche se trovi qualcuno disposto ad implementare il compilatore per te, potresti non voler aspettare quella persona ogni volta che hai una nuova idea da provare, quindi vorresti sapere come farlo tu stesso.

L'implementazione di un compilatore è un progetto di programmazione piuttosto avanzato, quindi se sei appena iniziato come programmatore, hai una curva di apprendimento ripida prima di te. Potresti iniziare osservando le esercitazioni e gli esempi per LLVM, anche se potrebbe non essere un'infrastruttura di compilazione adatta alla tua lingua.

2

Naruto, dipende dal tipo di "Lingua" che si desidera creare. Se si tratta di un linguaggio semplice, per l'apprendimento, e si sceglie la grammatica, ecc. Ecc., Non è necessario conoscere molto sulla programmazione. MA, se hai intenzione di affrontare una questione seria, dovrai studiare almeno un linguaggio di programmazione di computer profondo non solo per usarlo, ma per cercare di raggiungere molti dei suoi concetti, per esempio, come OO, generici, lambda espressioni, ecc. ecc.

Credetemi, questo non è un compito di mesi, ma un viaggio serio. Comunque, ti auguro buona fortuna;)

+0

Voglio sviluppare un linguaggio semplice, per l'apprendimento. –

2

Intimamente correlato. Davvero non hai un linguaggio se non hai un modo di interpretarlo/compilarlo in un formato eseguibile.

1

Dipende da cosa intendi per "compilatore". Compilatori/interpreti di solito consistono in due parti grandi: una parte parser, che legge un testo nella tua lingua e crea una struttura interna (AST) e una parte di generazione/interpretazione del codice, che legge l'AST e lo traduce in macchina o codici byte. Mentre sicuramente avrai bisogno di sapere come scrivere un parser per la tua lingua, la generazione del codice è meno importante, almeno, nelle fasi iniziali. Puoi iniziare semplicemente traducendo la tua lingua in C e vedere dove vai da lì.

+0

Questo è quello che stavo pensando di fare. Ho comprato i compilatori: principi, tecniche e strumenti di Aho, Lam, Sethi e Ullman. Vediamo fino a che punto arrivo da lì. –

Problemi correlati