Pregunta

Estoy pensando en escribir mi propio idioma poco.

He encontrado algunas opciones, pero no dude en sugerir más.

  • JVM
  • loro
  • OSA

Una gran cantidad de idiomas están utilizando la JVM, pero a menos que se escribe un lenguaje Java-ish, todo el poder del stdlib le da va a sentir fea; No es muy bueno en la materia, ya sea dinámica.

loro parece una buena máquina virtual para el desarrollo de las lenguas, pero tiene un poco abandonada / inacabada / manía proyecto olor a.

OSA es lo que los poderes Applescript, no una máquina virtual particularmente bien conocido, pero yo uso Mac, y que ofrece una buena integración del sistema.

CLR + Mac no parece una buena combinación ...

Mi lengua va a ser un objeto orientado lenguaje de flujo de datos concurrentes funcional con tipos fuertes y una mezcla de sintaxis de Python y Lisp. Suena bien, ¿verdad?

[editar]
Acepté Python por ahora, pero me gustaría saber más acerca de la AOS y loro.

¿Fue útil?

Solución

Uno de los enfoques que he jugado con es utilizar el pitón ast módulo para construir un árbol de sintaxis abstracta que representa el código para funcionar. La función Python compile puede compilar un AST en bytecode Python, que exec continuación, puede ejecutar. Este es el nivel un poco más alto que el código de bytes que genera directamente, pero usted tendrá que hacer frente a algunas peculiaridades del lenguaje Python (por ejemplo, la diferencia fundamental entre las declaraciones y expresiones).

Al hacer esto, también he escrito un módulo "deparse" que los intentos de convertir una vuelta AST al código fuente de Python equivalente, sólo para la depuración. Puedes encontrar el código en el PSIL repositorio si está interesado.

Otros consejos

Tener un vistazo a LLVM . No es una máquina virtual pura como tal, más un marco con su propio IR que le permite construir máquinas virtuales de alto nivel. Tiene una bonita cosas como el análisis de código estático y apoyo JIT

  • Lua tiene un pequeño, bien escrito y rápido VM
  • Python VM - realmente se puede adjuntar un nuevo lenguaje para que si lo desea. O escritura (uso?) Algo así como tinypy que es una pequeña y simple aplicación de la máquina virtual de Python.

Las dos opciones anteriores tienen acceso a bibliotecas estándar útiles que salvará a trabajar, y se codifican en relativamente limpio y modular C, por lo que no debería ser difícil de conectar.

Dicho esto, no estoy de acuerdo que el loro se abandona / manía. Es bastante madura, y tiene algunos desarrolladores muy fuertes que trabajan en él. Por otra parte, es específicamente una máquina virtual diseñado para ser el blanco de múltiples lenguajes dinámicos. Por lo tanto, se fue diseñada pensando en la flexibilidad.

¿Ha considerado PyPy? Por lo que he leído, además de ser un compilador JIT de Python, sino que también tiene la capacidad de manejar otros idiomas. Por ejemplo, hay un tutorial que explica cómo para crear un compilador JIT utilizando Brainfuck PyPy.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top