Tôi đã tạo một trình biên dịch trong C (sử dụng lex & bison) cho ngôn ngữ lập trình kiểu động hỗ trợ các vòng lặp, khai báo hàm bên trong hàm, gọi đệ quy, v.v. Tôi cũng đã tạo một máy ảo chạy mã trung gian do trình biên dịch tạo ra.
Bây giờ tôi đang nghĩ thay vì biên dịch sang mã trung gian của riêng mình, hãy biên dịch nó thành mã byte java.
Tôi thấy rằng câu hỏi về cách tạo một ngôn ngữ JVM đã được hỏi nhưng tôi không tìm thấy câu trả lời cho lắm.
Vì vậy, đây là những câu hỏi của tôi:
- Tôi đoán để tạo ngôn ngữ cho JVM, điều bắt buộc là phải đọc sách đặc tả JVM , bạn có thể đề xuất những cuốn sách nào khác (tất nhiên là ngoại trừ Dragon Book)? Tôi chủ yếu quan tâm đến sách hoặc hướng dẫn về cách tạo ngôn ngữ JVM, chứ không phải trình biên dịch nói chung.
- Có rất nhiều thư viện Java để đọc, ghi và thay đổi các tệp .class như jclasslib , bcel , gnu bytecode , v.v. Bạn sẽ đề xuất cái nào? Ngoài ra, bạn có biết các thư viện C làm công việc tương tự không?
- Tôi đang nghĩ về việc xem xét có thể một ngôn ngữ khác nhắm mục tiêu JVM như Clojure, Jython hoặc JRuby. Nhưng tất cả các ngôn ngữ này đều có trình độ rất cao và phức tạp (để tạo một trình biên dịch cho chúng). Tôi đang tìm kiếm một ngôn ngữ lập trình đơn giản hơn (tôi không bận tâm nếu nó không biết hoặc không được sử dụng) nhắm mục tiêu JVM và trình biên dịch của nó là mã nguồn mở. Bất kỳ ý tưởng?