He creado un compilador en C (usando lex & bison) para un lenguaje de programación de tipo dinámico que admite bucles, declaraciones de funciones dentro de funciones, llamadas recursivas, etc. También creé una máquina virtual que ejecuta el código intermedio creado por el compilador.
Ahora estaba pensando en lugar de compilar en mi propio código intermedio, compilarlo en código de bytes de Java.
Vi que la pregunta sobre la creación de un lenguaje JVM ya se ha hecho, pero no encuentro la respuesta muy informativa.
Asi que aqui están mis preguntas:
- Supongo que para crear un lenguaje para JVM es imprescindible leer el libro de especificaciones de JVM , ¿qué otros libros puedes sugerir (excepto Dragon Book, por supuesto)? Lo que más me preocupa son los libros o tutoriales sobre cómo crear un lenguaje JVM, no un compilador en general.
- Hay muchas bibliotecas de Java para leer, escribir y cambiar archivos .class como jclasslib , bcel , gnu bytecode , etc. ¿Cuál sugeriría? Además, ¿conoce las bibliotecas C que hacen el mismo trabajo?
- Estaba pensando en echar un vistazo a quizás otro lenguaje que se dirija a la JVM como Clojure, Jython o JRuby. Pero todos estos lenguajes son de muy alto nivel y complicados (para crear un compilador para ellos). Estaba buscando un lenguaje de programación más simple (no me importa si es desconocido o no se usa) que se dirija a la JVM y su compilador sea de código abierto. ¿Algunas ideas?