2010-02-11 6 views
9

Estoy pensando en escribir un pequeño compilador de C#.¿Tendría sentido escribir un compilador de C# que se dirija a LLVM?

Una idea que he estado jugando con la escritura es un subconjunto de la gramática de C#, por ejemplo, hasta 2,0 para antlr. Entonces, ¿usar esto para apuntar al LLVM y escribir un compilador de código nativo para C#?

¿Tiene esta idea incluso tiene sentido o no funcionaría? ¿Habría alguna manera de seguir haciendo llamadas al BCL?

sé que no es el CCI (Common Compiler Infrastructure) que me ayudaría en simplemente generar ejecutables de .NET. Pero tengo curiosidad por saber si lo que dije arriba sería posible.

+0

No conozco los elementos internos de .NET lo suficiente como para realmente ayudarlo, pero hasta donde yo sé, no debería haber ningún problema excepto para llamar a ensambles .NET externos – Earlz

+1

Definir "pequeño". La especificación es * quinientas páginas * de largo. –

+2

@Eric Lippert, Mike Stall, quien creo que está en su equipo compilador, escribió un compilador de C# relativamente "pequeño" llamado "Azul" que es capaz de arrancarse como su primer programa C#. – KingNestor

Respuesta

1

A menos que desee volver a escribir toda la biblioteca estándar, también, que sería mejor encontrar un proyecto diferente, si estás buscando algo que hacer. Una posibilidad sería escribir un compilador de códigos de bytes .NET o un ensamblador IL.

3

Más allá de Mono ya citado, Microsoft está trabajando en su propia aplicación llama LLILC (que no es sólo un experimento). Entonces tiene mucho sentido.

Cuestiones relacionadas