2012-03-04 18 views
7

Voglio scrivere un semplice compilatore per scopi didattici in Delphi. Ho letto su Coco/R e ho trovato questa implementazione per Delphi: http://code.google.com/p/dcocor/. Da quello che ho letto, questo è un parser per la sintassi di Delphi 2009.Can Coco/R può trasformare un file analizzato in bytecode?

Cosa dovrei fare per trasformare il file analizzato in un bytecode? Can Coco/R può farlo?

Conosco linguaggi di scripting come FastScript o DWS, ma mi piacerebbe provare e scrivere il mio per i miei scopi.

Per favore dammi un consiglio o chiarire un po 'le cose.

+2

Hai letto il manuale Coco/R? Direi di iniziare da lì. http://ssw.jku.at/Coco/Doc/UserManual.pdf –

risposta

7

Cosa dovrei fare per trasformare il file analizzato in un bytecode?

In primo luogo, decidere quale tipo di codice byte vorresti avere: JVM? LLVM? MSIL? Inventare il tuo?

Può Coco/R fare questo?

Coco/R è un framework generatore di parser, genera solo parser lexer per una lingua definita dall'utente e alimentata al generatore. Passi dopo che è la tua responsabilità. Anche se potrebbero esserci progetti che possono aiutare a generare codice ast/target (ma non ne ho trovato nessuno per Coco/R).

+1

Mi piacerebbe semplicemente convertire i miei script in un codice eseguibile - x86 EXE va perfettamente bene. Ho trovato un parser LLVM per Delphi (http://code.google.com/p/llvm-pascal/), ma non sembra generare bytecode. Mi sto perdendo qualcosa? – Pateman

+0

Ciò che questa risposta ti dice è che dovrai scrivere il tuo generatore di codice. –

+0

@Pateman: quel progetto è un compilatore Pascal con backend LLVM, non uno script arbitrario per eseguibile/bytecode. Tuttavia, nessuna cosa del genere esiste. Leggi la documentazione di Coco/R se vuoi usarla, cosa genera il parser e dopo aver deciso l'arco di destinazione, mappa ciò che il parser genera nella lingua nativa dell'arco di destinazione (cioè x86 asm, llvm ir, ecc.) – LeleDumbo

Problemi correlati