Stworzyłem kompilator w C (używając Lex & Bison) dla dynamicznego języka programowania, który obsługuje pętle, deklaracje funkcji wewnątrz funkcji, wywołania rekurencyjne itp. Stworzyłem również maszynę wirtualną, która uruchamia kod pośredni utworzony przez kompilator.
Myślałem o skompilowaniu go do kodu bajtowego Java zamiast własnego kodu pośredniego.
Widziałem, że pytanie o stworzenie języka JVM zostało już zadane , ale nie uważam odpowiedzi za zbyt pouczającą.
Oto moje pytania:
- Myślę, że aby stworzyć język dla JVM, koniecznością jest przeczytanie książki specyfikacji JVM , jakie inne książki możesz zasugerować (oprócz oczywiście Dragon Book)? Najbardziej niepokoją mnie książki lub samouczki dotyczące tworzenia języka JVM, a nie kompilator w ogóle.
- Istnieje wiele bibliotek Java do odczytu, zapisu i zmiany
.class
plików, takich jak jclasslib , bcel , kod bajtowy gnu itp. Którą z nich byś zaproponował? Czy wiesz również o bibliotekach C, które wykonują tę samą pracę? - Zastanawiałem się, czy przyjrzeć się innemu językowi, który jest przeznaczony dla JVM, takim jak Clojure, Jython lub JRuby. Ale wszystkie te języki są na bardzo wysokim poziomie i są skomplikowane (aby stworzyć dla nich kompilator). Szukałem prostszego (nie mam nic przeciwko, jeśli jest nieznany lub nieużywany), który jest przeznaczony dla JVM, a jego kompilator jest open source. Jakieś pomysły?