SORU
1 AĞUSTOS 2010, Pazar


JVM bir programlama dili oluşturmak

İçinde fonksiyonlar, özyinelemeli çağrılar vb döngüler fonksiyonlar tanımlamalar destekleyen dinamik yazdığınız programlama dili için C (lex & bizon kullanarak) bir derleyici oluşturduk. Ben de ara kod derleyici tarafından oluşturulan çalışan sanal bir makine icat etti.

Şimdi kendi Ara benim kod derleniyor yerine, bu byte kod java derlemek için düşünüyordum.

JVM bir dil oluşturma hakkında soru zaten asked oldu ama cevap çok bilgilendirici bulmuyorum gördüm.

Burada benim sorular:

  1. Gerekir okumak için diğer kitapları ne JVM specification kitap, JVM bir önerin için bir dil (tabii ki Ejderha Kitabı hariç) oluşturmak için sanırım? Çoğunlukla JVM dil, genel olarak bir derleyici oluşturmak için nasıl kitaplar veya dersler içinde endişeliyim.
  2. Okuma, yazma ve değiştirmek için birçok Java kütüphaneleri var .Sınıf*2, *, gnu bytecode, **3 vb gibi dosyaları. Hangisini önerirsiniz? Ayrıca, aynı işi yapan C kütüphaneleri farkında mısınız?
  3. Clojure, Jython veya JRuby gibi JVM hedefleyen belki de başka bir dil bakmak düşünüyordum. Ama tüm bu diller çok yüksek seviyeli ve (onlar için bir derleyici oluşturmak için) karmaşık. JVM hedefleyen (bilinmeyen ya da kullanılmayan bu benim umrumda değil) basit bir programlama dili arıyordum ve bu derleyici açık kaynak. Herhangi bir fikir?

CEVAP
1 AĞUSTOS 2010, Pazar


Ben de tavsiye AKIŞ, ama bir bakmak Jasmin kullandım (ya da vardı) için bir üniversite projesi ve bu işleri çok iyi, yazdığım bir lexer/ayrıştırmak/çözümleyici/doktoru/jeneratör kombinasyonu için bir programlama dili kullanarak java ve jasmin, çok üreten, JVM Kodu. here, ilginç bölümü source-code itself olmalıdır kodunu yükledim. Klasörü "" jasmin çevirici giriş biçimine AST bir Ağaç dönüştüren. kod bir polis bul bytecode/InsanelyFastByteCodeCreator.java içinde Oldukça yalındır.

Java kaynak dil Lexer Çözümleyici Çözümleyici tarafından AST için tranformed olan) bir alt kümesidir bu MiniJava aradı. Bazı "" Miras, Kurucular, statik yöntemler, özel alanlar gibi özellikleri/yöntemleri. karmaşık yoksun Hiçbiri bu özellikleri uygulamak için zor, ama orada başka bir görev için yazmak bir X 86 arka uç (yani üretmek için makine-çevirici), ve bu şeyler ile ilgilenip almak zor eğer bir JVM olan işler bazı şeyler.

Diye merak ediyorsun garip Sınıfın adı: görev üniversite projesi için dönüşüm AST bir bir SSA Grafik (grafik temsil eden giriş kodu), daha sonra optimize grafik sonra sıra grafik içine java bayt kodu. Proje çalışmaları yaklaşık 3/4 ve İnsanlyFastByteCodeCreator-kes kısa test etmek için sadece bir şey olduğunu.

"Java Sanal Makinesi" kitabından Jon Meyer ve Troy Downing. bir göz at Bu kitap ağır Jasmin-Çevirici başvuruları, JVM iç anlamak için oldukça yararlı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Carlos Delgado

    Carlos Delga

    21 HAZİRAN 2011
  • DominicFear

    DominicFear

    30 Kasım 2006
  • HuskyStarcraft

    HuskyStarcra

    4 HAZİRAN 2009