Projede aşağıda türetim kuralları verilmiş olan gramer için bir LR ayrıştırıcısı geliştirilecektir. Çalışma iki bölüm halinde gerçekleştirilecek ve farklı tarihlerde teslim edilecektir.
1. BÖLÜM


2. BÖLÜM –
4. İlk bölümde gramerin LR(0) grameri olmadığını belirlemiş olmalısınız. İlk bölümdeki çalışmalarınızdan yararlanarak, gramer için bir LR(1) ayrıştırma tablosu oluşturun ve sorunun nasıl giderildiğini raporunuzda açıklayın.
5. Ötele-İndirge ayrıştırma algoritmasını gerçekleyen ayrıştırıcıya ait kodu yazın.
6. Gramere uygun örnek tarayıcı çıktıları üzerinde ayrıştırma işlemini yürütün. Ayrıştırma işleminin başarılı ve başarısız olduğu en az iki farklı örnek için ayrıştırıcıyı deneyin. Ayrıştırıcı, her ayrıştırma adımı için açıklayıcı bilgileri içeren bir satırı çıkışa aktarmalıdır.
ÖNEMLİ NOT:
a)1. bölüme ait çalışma teslim edilmeden ikincisi teslim edilemez.
b)1. bölümü zamanında teslim etmemiş olan öğrenciler
2. bölüme ait çalışmanın teslim tarihinde her ikisini birlikte teslim edebilirler ancak 1. bölüm için puan alamazlar.
ÖDEVİN TESLİM ŞEKLİ:
❖ Ödev C++ dilinde nesneye yönelik programlama kavramları kullanılarak kodlanacaktır. Her bölüm için kod ile birlikte teslim edilecek olan raporda, yukarıda açıklanması istenen konular açıklanacak ve gerçekleÅŸtirilen çalışma ayrıntılı bir ÅŸekilde anlatılacaktır: kullanılan veri yapıları ile tüm sınıf tanımları verilecektir. Ayrıca, ayrıştırma iÅŸleminin uygulandığı örnek tarayıcı çıktıları ile bu örnekler için ayrıştırıcının ürettiÄŸi adımlar ve sonuçlar eklenecektir.
❖ Ödevinizi Ninova sistemi üzerinden kaynak kodlarını içeren bir arÅŸiv dosyası ve pdf formatında rapor dosyası olarak teslim etmeniz gerekmektedir. Geç teslimler kabul edilmemektedir.
❖ Tüm kodunuz C++ programlama dili ile yazılmalı ve g++ kullanarak ITUÂ’nun Linux Sunucusu'nda (SSH üzerinden eriÅŸebilirsiniz) derlenebilmeli ve çalıştırılabilmelidir. Kodunuzun hatasız derlenmesi beklenmektedir; aksi takdirde, ödevin notu sıfır olarak deÄŸerlendirilebilir.
❖ Yazdığınızın programı derlemek ve çalıştırmak için gerekli talimatları, yorum satırları olarak kodunuzun baÅŸlangıcına ve rapora eklemeniz gerekmektedir.
❖ Bu ödev üzerinde bireysel olarak çalışmanız beklenmektedir. Ödev çözümlerinde yapılacak iÅŸbirliÄŸi yapmamanız beklenmekte ve tespit edildiÄŸi takdirde kopya olarak deÄŸerlendirilecektir. Bir baÅŸkasının çalışmasını kendi çalışmanız olarak göndermek (bir parçası olsa ve üzerinde deÄŸiÅŸiklik yapılmış olsa da) ya da farklı kaynaklardan (internet de dahil olmak üzere) atıf yapılsa bile kopyala / yapıştır yaparak kod ya da metin içeriklerini ödevinizde kullanmanız gibi eylemler de bu kapsama girmektedir. Tespit edildiÄŸi takdirde ilgili durum disiplin soruÅŸturması için idareye bildirilecektir. Kopya eylemine katılan tüm taraflar eÅŸit ÅŸekilde muamele göreceklerdir.