En Sol Türetme Left Most Derivations

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.

  1. <assign>=><id>=<expr>
  2.               =>   A  =<expr>
  3.               =>   A  =<id> * <expr>
  4.               =>   A  =   B *  <expr>
  5.               =>   A  =   B *  (<expr>)
  6.               =>   A  =   B *  (<id> + <expr>)
  7.               =>   A  =   B *  (  A   + <expr>)
  8.               =>   A  =   B *  (  A   +  <id>   )
  9.               =>   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.

« »