2009-04-04 11 views
13

Estoy viendo todos estos nuevos lenguajes para .NET y JVM. ¿Cómo uno comienza a hacer uno?¿Cómo hacer un lenguaje .Net o JVM?

No encuentro buena documentación sobre las especificaciones de JVM o MSIL.

Editar

que ya saben cómo analizar, estoy más interesado en cómo hay tantas personas que hacen nuevos lenguajes que se basan en esas plataformas.

Respuesta

7

Estás de suerte. Se está desarrollando una explosión de idiomas para .NET, y hay artículos/recursos dirigidos a individuos como usted (no solo a grandes corporaciones con toneladas de dinero para invertir).

Busque "tiempo de ejecución dinámico del lenguaje" y vaya desde allí.

Éstos son algunos enlaces:

Blog of the guy who is the brain behind IronPython

The home of the Dynamic Language Runtime

An article about how IronPython was implemented

A blog posting talking about abstract syntax trees and the DLR

4

El Java Virtual Machine Specifications, Second Edition está disponible en línea.

Uno puede dirigirse a la JVM por tener una escritura de un compilador que genera código de bytes de Java (que se define en las especificaciones de JVM.)

O, mediante la utilización de las bibliotecas existentes, tales como Apache BCEL, se puede producir válidos class archivos a través un programa Java sin tener que manipular realmente el bytecode en el nivel de byte.

3

MSIL no es llamado MSIL más, como un estándar público es CIL (Common Lenguaje Intermedio), parte de la CLI (Common Language Infrastruc) ture) estándar.

Aquí está la especificación estándar ECMA-335 CLI.

0

Para .NET puede usar los árboles de expresión del DLR o incluso compilar a un lenguaje de alto nivel existente como C# o Java y luego compilar eso. Algunos lenguajes no VM de alto nivel (liek Haskell y Eiffel) se compilan en C. Si desea compilar en bytecode MSIL o JVM, puede usar Mono.Cecil o BCEL para hacerlo más fácil.

1

respuesta a la pregunta actualización:

que ya sabe cómo analizar, estoy más interesado en cómo hay tantas personas que hacen nuevos lenguajes que son basado en esas plataformas.

Lo que permite que tantas personas desarrollen idiomas para estas plataformas es probablemente la disponibilidad de varios ejemplos muy completos con código fuente disponible públicamente.

Las especificaciones de las plataformas están disponibles para su descarga, y las personas que ya tenían experiencia en escribir compiladores no tardaron en producir nuevos backends para sus compiladores existentes que se dirigirían a las nuevas plataformas.

Microsoft mismos publicaron Rotor, también hay Mono por supuesto. También hay muchas técnicas populares para la generación de código de tiempo de ejecución que se acumulan clases de envoltura simples en el momento - estos también son mini compiladores.

El compilador C# es bastante rápido y expone la mayoría de las instalaciones de CLR de forma directa, por lo que podría escribir un compilador que simplemente produjera archivos C# temporales y luego compilara C# para finalizar el trabajo.

Cuestiones relacionadas