Programda Uyulacak Gramer
<assign>-><id>=<expr>
<id>->A | B | C
<expr>-><id>+<expr>
| <id>*<expr>
| (<expr>)
| <id>
Yukarıdaki kurala göre A=B*(A+C) ifadesini en sol türetme yöntemini kullanarak oluşturalım.
- <assign>=><id>=<expr>
- => A =<expr>
- => A =<id> * <expr>
- => A = B * <expr>
- => A = B * (<expr>)
- => A = B * (<id> + <expr>)
- => A = B * ( A + <expr>)
- => A = B * ( A + <id> )
- => A = B * ( A + C )
1. adımda programımızı başlattım. <assign> yerine <id> ve <expr> ifadesini koydum.Her aşamada bir lexeme değiştirme hakkımız var.
2. aşamada kurala bakıyoruz <id> yerine neler koyabiliriz diye A,B,C değerlerinden biri koyabiliriz.Bizden istenen soruya göre hareket ettiğimiz için A koydum.
3. Adımda A nın sağ tarafındaki <expr> bölümünü açacağız.Bizden istenen ifadede çarpma işlemi var bu yüzden bu yüzden <expr> yerine <id>*<expr> ifadesini koyuyoruz.
4.adımda <id> yerine B ifadesini yerleştirdim.Bu aşamada neden <expr> ifadesini açmadıkta <id> yi açtık diye bir soru aklınıza gelebilir.Burda en soldan türetme olduğundan <id> ifadesini açıyoruz.
5. adımda <expr> yerine gelebilecek seçeneklerden parantezli olanı seçip yerleştirdim.
6. adımda artık parantezin içinde neler olacak onu belirliyorum.Soruda A+C istemişti bu yüzden gramerde <id>+<expr> ifadesini kullanacağım.
7. adımda yine soldaki <id> yerine bu sefer A ifadesini yerleştirdim.Solda yerine konulacak ifade kalmadı sıra <expr> ifadesine geldi.<expr> ifadesi yerine C yi kullanmam lazım.
8. adımda bu yüzden <expr> yerine <id> yazdım.
9 adımda ise <id> yerine C ifadesini koydum.Bizden istenen ifadeyi (A=B*(A+C)) en sol türetme yöntemiyle oluşturmuş oldum.
Mehmet A.
24/01/2017 — 11:55
bn sınavlar için calısıyorum güzel örnek olmus dahasını bekliyoruz …