2011-10-18 14 views
9

Voglio leggere e imparare dal codice sorgente dell'interprete/compilatore di un linguaggio di scripting. Quale interprete/compilatore del linguaggio di scripting ha il codice sorgente più semplice, pulito e facile da leggere? Preferirei che fosse scritto in C/C++ (cos'altro scrivono i compilatori in ogni caso?) Perché sto pianificando di scrivere un compilatore in C.Codice sorgente interprete linguaggio di scripting per imparare da

+0

Prova quello che ti piace di più. – hari

+0

Sembra che alcune persone abbiano interpretato male la domanda. Si prega di rileggere: p – slartibartfast

risposta

11

Dai uno sguardo allo lua, puoi passare attraverso le prime versioni del linguaggio di programmazione e vedere come si è evoluto. È scritto in C e ha un codice pulito e piacevole. Puoi scrivere un compilatore in quasi tutti i linguaggi di programmazione, ma C è stato quello che la maggior parte dei programmatori ha scelto.

+1

È possibile ottenere il codice sorgente per tutte le versioni in un unico pacchetto all'indirizzo http://www.lua.org/ftp/lua-all.tar.gz. Stanno tutti bene. – lhf

+0

Il codice sorgente per alcune versioni recenti di Lua può essere consultato con i collegamenti su http://www.lua.org/source/. Vedi anche http://lua-users.org/wiki/LuaSource. – lhf

6

L'interrutore CPython è in circolazione da un po 'di tempo e vorrei immagina che sarebbe molto utile per te.

+0

Il richiedente domanda non era chiaro su cosa volesse. Ora che ha chiarito, ho modificato la mia risposta. –

0

un linguaggio famoso, ma non semplice (codice sorgente PHP). È possibile usufruire del codice sorgente.

PHP Source Code

+1

Dato che 'semplice' è il criterio _primario_ dell'OP, se la fonte PHP non è semplice, allora come è questa una risposta? – ildjarn

+0

@ildjarn: il codice sorgente PHP non è semplice, ma puoi anche trarre vantaggio dal codice sorgente –

2

Date un'occhiata sul V8 JavaScript. Ogni interprete ha un componente chiamato tokenizer. GNU ne ha uno il cui nome è bisonte. Dai un'occhiata anche a questo. Può essere utile. Chromium utilizza alcuni tokenizer per interpretare html anche sul Webkit, ma V8 è l'interprete javascript.

Claudio M. Souza Junior

4

AngelScript è una buona opzione per conoscere compilatori. Questo è un linguaggio con sintassi familiare C/C++, garbage collection, è orientato agli oggetti con ereditarietà e polimorfismo, multipiattaforma e compila in byte-code.

La mia seconda scelta sarebbe Lua.

4

Consiglierei, come introduzione gentile, di dare un'occhiata allo LLVM Tutorial.

Chris Lattner crea un semplice linguaggio giocattolo Kaleidoscope per mostrare le varie fasi di compilazione:

Ha poi spiegato come add JIT capabilities (essenziale per un interprete).

Il linguaggio del giocattolo è estremamente semplice, quindi il codice risultante è semplice e dimostra perfettamente l'architettura senza affogarvi nei dettagli dell'implementazione.

Non sono sicuro che il tutorial sia completamente aggiornato e possa essere utilizzato come è contro una versione recente di LLVM, ma consiglio almeno di leggerlo.

(E, naturalmente, leggendo il Dragon Book).

Problemi correlati