2010-02-11 4 views
9

Sto pensando di scrivere un piccolo compilatore C#.Avrebbe anche senso scrivere un compilatore C# che abbia come target LLVM?

Un'idea con cui ho giocato è scrivere un sottoinsieme della grammatica C#, diciamo fino a 2.0 per ANTLR. Quindi, usando questo per indirizzare il LLVM e scrivere un compilatore di codice nativo per C#?

Questa idea ha senso o non funzionerebbe? Ci sarebbe un modo per fare ancora chiamate al BCL?

So che c'è lo CCI (Common Compiler Infrastructure) che mi aiuterebbe a generare semplicemente eseguibili .NET. Ma sono curioso di sapere se ciò che ho detto sopra sarebbe possibile?

+0

Non conosco gli interni di .NET abbastanza bene da poterti davvero aiutare, ma per quanto ne so non dovrebbe essere un problema qualsiasi tranne che per chiamare gli assembly .NET esterni – Earlz

+1

Definire "small". La specifica è lunga * cinquecento pagine *. –

+2

@Eric Lippert, Mike Stall, che credo appartenga al tuo team di compilatori, ha scritto un compilatore C# relativamente "piccolo" chiamato "Blue" che è in grado di eseguire il bootstrap come il suo primo programma C#. – KingNestor

risposta

1

A meno che non si desideri riscrivere anche l'intera libreria standard, sarebbe meglio trovare un progetto diverso, se si sta solo cercando qualcosa da fare. Una possibilità sarebbe quella di scrivere un compilatore bytecode .NET o un assemblatore IL.

3

Oltre a Mono già citato, Microsoft sta lavorando nella propria implementazione denominata LLILC (non è solo un esperimento). Quindi ha molto senso.