📰 Hikayesi ve Doğuşu
Yacc, Bison ve Lemon gibi geleneksel LALR parser üreticileri, semantik aksiyonları kurallar daraldıkça bottom-up (aşağıdan yukarıya) mantıkla çalıştırır. Bu durum, kuralın eylemi çalıştırıldığında üst düğümün (parent) henüz bilinmemesine yol açar ve geliştiricileri karmaşık manuel AST sınıfları yazmaya iter. Renjipanicker tarafından geliştirilen Yantra, tam da bu kısıtlamayı aşmak için doğdu.
⚡ Nasıl Çalışıyor & Mimari Detaylar
Yantra, veriyi işlerken önce tüm AST yapısını kurar ve ardından top-down (yukarıdan aşağıya) bir geçişle (walk) özelleştirilmiş semantik aksiyonları tetikler. Bu sayede üst kuralın eylemi, çocuk düğümleri ziyaret edilmeden önce çalışabilir. Dahili mod desteğine sahip entegre lexer, UTF-8/Unicode girdileri doğrudan destekler. İsteğe bağlı amalgamated modu sayesinde tüm parser'ı ve entegre bir main() fonksiyonunu tek bir .cpp dosyasında toplayabilir.
💡 Neden Radarımıza Girdi?
C++ standart kütüphanesi dışında hiçbir dış bağımlılığı olmaması, projeyi mevcut projelere entegre etmeyi son derece pratik kılıyor. Aynı gramer tanımından birden fazla walker (örneğin biri C++, diğeri Java yayan) üretilebilmesi ve push-based (akış tabanlı) lexer yapısı, derleyici yazım süreçlerine taze bir soluk getiriyor.
🚀 Nasıl Denenir & Kaynaklar
Projeyi derlemek için C++23 destekleyen bir derleyici ve CMake yeterlidir. Depoyu klonladıktan sonra build adımlarını takip ederek ycc çalıştırılabilirini elde edebilirsiniz: git clone git@github.com:TantrixAuto/yantra.git && cd yantra && mkdir build && cd build && cmake .. && cmake --build . komutlarıyla derleme işlemini tamamlayabilirsiniz.
💬 Yorumlar ve Değerlendirmeler 0
Deneyimlerinizi veya sorularınızı toplulukla paylaşın.
Yeni Yorum ve Puan Bırakın