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.