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