Gönderen Konu: Compiler yazma  (Okunma sayısı 7149 defa)

Compiler yazma

« : 22.12.2009 19:15:15 »
Hızlı düğmeleri aç

paradox

İleti: 134

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
arkadaşlar compiler nası yazılır?..elimde c++ kütüphaneleri var..bunları uydurma fonkisyon isimleriyle kullanıcam..ayrı bi ide'si olucak..
(3d game studio'nun dili olam lite c tarzında)
c# da böyle bi component vardı sanırım ama nası kullanılır ne işe yarar bilmiyorum..

Compiler yazma

« Yanıtla #1 : 23.12.2009 10:41:05 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
bunun için sourceforge.net'de opensource projeler var. Nightlord C=++'ı geliştirirken kullanmıştı birşey. istersen Nightlord'a bir sor (e-mail'ı yoksa sende forum üzerinden PM ya da http://nightnetwork.org/ adresinden bir şekilde ulaşırsın kendisine).

Compiler yazma

« Yanıtla #2 : 23.12.2009 18:16:29 »
Hızlı düğmeleri aç

paradox

İleti: 134

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
nightloarda sorarım msn'den..çok sağol

Compiler yazma

« Yanıtla #3 : 23.12.2009 18:24:11 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
imzaya bak ya, "7d9'da sonuncu olan kişi". adam 7d8'de birinci olunca "7d8'de birinci olan kişi" yazmıyor da sonuncu olunca yazıyor, bu da iyi :)

Compiler yazma

« Yanıtla #4 : 23.12.2009 19:59:31 »
Hızlı düğmeleri aç

Ragnor

İleti: 901

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://ozanemirhan.blogspot.com
adam hırslandırıyor işte kendini :)

Compiler yazma

« Yanıtla #5 : 19.01.2010 03:23:02 »
Hızlı düğmeleri aç

nightlord

İleti: 1.085

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.nightnetwork.org
bu thread'i atlamisim, pardon.
 
compiler yapmak icin en sik kullanilan iki temel yol var
1- flex ve bison kullanmak
 
flex duz bir string'i alir icinde bir grup tanimli regexp arayip "token"lari yakalar. yani stringi bir token listesine cevirir. Tokenlar, dildeki komut kelimeleri, degisken isimleri, sabitler ve operatorler vs olabilir.
 
Bison ise flex'ten gelen token'lari alir ve bir dilin tanimladigi kurallara gore parse agacini olusturur. mesela agacin koku program, onun altinda class tanimlari, onun altinda metod tanimlari, onun altinda komutlar, onun altinda degisken ve operatorler vs seklinde programi koca bir agaca donusturur
 
Bu noktadan sonra da agacta ki node'lara karsilik gelen derleyici yazarinin yazdigi "kod uretme" kodlari bison tarafindan cagirilir. Boylece o alt agaclari hedef platformun anlayacagi koda cevirirsiniz.
 
flex ve bison daha onceden bu isleri yapmakta kullanilan iki ata program olan lex ve yacc'in opensource versiyonlaridir. Gayet de saglam manual'leri vardir. ben manualdan ogrenmistim mesela
 
2- Daha basit uygulamalar icin biraz daha yavas bir yol, boost/spirit kullanmaktir. Bunu kullanarak kod icinde kucuk parserlar tanimlayabilirsiniz. Flex/bison derleyicilere gore cok yavastir ama basit parse ihtiyaclari icin gayet iyidir. Ornegin bir program sadece baslarken bir takim dosyalari parse edip sonra bir daha dokunmuyorsa boost/spirit gayet yeterlidir. Oyunlarda falan uygundur mesela. Hatta IKV server'indaki bazi alt sistemler (skill ve quest sistemleri diye hatirliyorum) bunu kullaniyordu ben ilk yazdigimda. Hala kullaniyor mu bilmiyorum.

Compiler yazma

« Yanıtla #6 : 20.01.2010 23:27:03 »
Hızlı düğmeleri aç

paradox

İleti: 134

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
eline sağlık güzel yazmışsında ben şimdilik bişey anlamadım..Biraz araştırma yapmam gerek..sonra tekrar okurum iycene:D

Compiler yazma

« Yanıtla #7 : 21.01.2010 00:40:50 »
Hızlı düğmeleri aç

Ragnor

İleti: 901

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://ozanemirhan.blogspot.com
Abi anladığım kadarıyla amacın game maker tarzı bişey yapmak. Bence derleyici ile uğraşacağına yorumlayıcı yap. Basit bir parser yaz, kodu okuyup oradaki komutları çalıştırsın işte. Derleyici işine girersen, o işin içinden çıkmak zor olur, arada proje heba olur gibime geliyor. Ama derdin "şu derleyiciler nasıl yapılıyomuş la?" ise uğraş dur tabi :).

Compiler yazma

« Yanıtla #8 : 22.01.2010 01:29:54 »
Hızlı düğmeleri aç

endo

İleti: 687

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.moldibi.com
selam, hala ilgileniyorsan elimde cok eskiden kalma bir "Making A Compiler" adli bir dokuman arsivi var, yanlis hatirlamiyorsam 88 yilinda yazilmis, C ile compiler yapmanin yontemini "sifirdan" anlatiyor. yani tum dosya okuma, parsing vs. her seyi yazmis abi.
guzel yani yaziyi bitirdiginde elinde bir compiler'in oluyor yani sadece teori anlatip gerisini sen yap demiyor, adim adim bitiriyor derleyiciyi.
ama tabii coook low level bir dokuman, okumak eglenceli olmayabilir ve yontemler eski kalmis olabilir, Nightlord'un tavsiye ettikleri cok daha kullanisli olacaktir, ama konu basliklarini gormek acisindan okunabilir.
- endo of glance -