Nikhil Kothari's Script# es posiblemente uno de los conceptos más sorprendentes que he visto en JavaScript desde hace bastante tiempo. Esta pregunta no se trata de JavaScript, sino de la compilación de lenguaje en el tiempo de ejecución de .NET.Cómo hacer un compilador paralelo para .NET
He estado bastante interesado en cómo, usando la plataforma .NET, uno puede escribir un compilador para un lenguaje que ya tiene un compilador (como C#) que generará resultados separados del compilador original al tiempo que permite el compilador original para generar resultados para la misma fuente durante la misma operación de compilación, al mismo tiempo que hace referencia/usa la salida del otro compilador también.
No estoy completamente seguro de que incluso entiendo el proceso lo suficientemente bien como para hacer la pregunta con los detalles de la derecha, pero esta es la forma en que actualmente veo el proceso, de acuerdo con los diagramas en el guión # docs. He pensado en muchas cosas relacionadas con el diseño de un lenguaje complejo y la compilación que pueden aprovechar conceptos como este y estoy interesado en lo que otras personas piensan sobre los conceptos.
-
Edit: Gracias por sus comentarios, hasta el momento; su información es, por derecho propio, muy intrigante y me gustaría investigar más, pero mi pregunta es sobre cómo podría escribir mis propios compiladores que se pueden ejecutar en la misma fuente al mismo tiempo produciendo múltiples tipos diferentes de salida (potencialmente) interdependiente usando el CLR. El script # sirve como un ejemplo, ya que genera JavaScript y un ensamblado que usa la misma fuente de C#, al tiempo que hace que el ensamblado compilado coopere con JavaScript. Tengo curiosidad por conocer los diversos enfoques y conceptos teóricos al diseñar algo de esta naturaleza.
La magia que me interesa es lo que hace en el proceso de compilación para hacer que el ensamblaje que genera a partir de su código haga referencia al javascript se genera a partir de tu código. Puede simplemente alterar la fuente antes de pasarla a CSC o quizás a CodeDOM para compilar un gráfico basado en la fuente pero con cambios. – TheXenocide
Muchas gracias por una respuesta real a la pregunta, he estado esperando que alguien llegue a esto. Si puedes aclarar si existe algo para realizar esta magia o si es solo un poco de mano, estoy preparado para aceptar esta respuesta. (La clave: una fuente - dos salidas interdependientes) – TheXenocide