Я создал компилятор на C (используя lex и bison) для динамически типизированного языка программирования, который поддерживает циклы, декларации функций внутри функций, рекурсивные вызовы и т.д. Я также создал виртуальную машину, на которой выполняется промежуточный код, созданный компилятором.
Теперь я думал вместо того, чтобы компилировать мой собственный промежуточный код, скомпилировать его в java-байтовый код.
Я видел, что вопрос о создании JVM-языка уже был спросил, но я не нахожу ответ очень информативным.
Итак, вот мои вопросы:
- Я предполагаю, что для создания JVM языка необходимо прочитать спецификацию JVM, какие другие книги вы можете предложить (кроме Dragon Книга, конечно)? Я в основном обеспокоен книгами или учебниками о том, как создать язык JVM, а не компилятор вообще.
- Существует множество библиотек Java для чтения, записи и изменения файлов .class, таких как jclasslib, bcel, gnu bytecode и т.д. Какой из них вы бы предложили? Кроме того, знаете ли вы о библиотеках C, которые выполняют ту же работу?
- Я думал о том, чтобы взглянуть на другой язык, который нацелен на JVM, например, Clojure, Jython или JRuby. Но все эти языки очень высоки и сложны (чтобы создать для них компилятор). Я искал более простой (я не против, если это неизвестный или неиспользуемый) язык программирования, который нацелен на JVM, а его компилятор - с открытым исходным кодом. Любые идеи?