lex

Bu yazımda lexical analysis (sözcüksel analiz ) nasıl yapılır, bir programlama dilinde kullanılan kelimeler değişken mi reserved word (ayrılmış kelime “for,if,float vb.”) mi olduğunu derleyici nasıl anlar, neye göre yapar bunlardan bahsedeceğim.

Start diyerek başlıyoruz analiz etmek istediğimiz sözcüğün ilk karakterini getchar ile nextchar’a atarız. Nextcharda olan karakterin CharClassı belirlenir bu karakter Letter ise üst yoldan gider, Digit ise alttaki yoldan gideceğiz. Daha sonra nextcharda olan bu karakteri addchar ile lexeme’ya atarız.Getchar ile analiz etmek istediğimiz sözcüğün ikinci karakterini alırız yine bakarız digit mi letter mı diye ikisi haricinde (digit, letter) bir karakter gelirse (“ “ , ; vb) analiz işlemimiz tamamlanmış demektir.Bu aşamadan sonra lexeme’da bulunan kelime return lookup ile veya return Int_Lit ile bakarız ayrılmış kelime olup olmadığına , ayrılmış kelime ise derleyici o komutu çalıştıracaktır. Değişken ise derleyici ona göre işlem uygulayacaktır .

Örnek olarak “hero2010;” kelimesini değişken mi, ayrılmış kelime mi analiz edelim. İlk olarak h karakteri getchar ile nextchara atılır.”h”ye bakalım Digit mi, Letter mı diye. Letter olduğunu anladık Charclassa letter dedik ve “h” karakterini addchar ile lexeme’ ya attık.Şimdi getchar ile “e” karakterini alacağız üsteki yolu takip ediyoruz letter veya digit olmalı idi yukarıdaki resme göre baktık “e” karakteri letter bunu aldık addchar ile lexeme’ya attık sonra “r” ve “o” karakterleri içinde aynı işlemi yaptık sonra getchar ile 2 sayısını nextchara attık baktık yine digit mi letter mı diye digit olduğunu anladık addchar ile lexeme’ya atadık bu aşamada lexeme’nın değeri “hero2” oldu.Sıra ile “0” , “1”, “0” sayılarını da lexeme’ya aynı işlemleri yaparak attık. Sıra ”;” operatörüne geldi getchar ile nextchara aldık baktık digit veya letter mı diye değil, o zaman analiz işlemi tamamlandı şimdi ise return lookup ile lexeme’da bulunan “hero2010” ayrılmış kelimemi yoksa bir değişken adı mı onu kontrol edeceğiz ayrılmış kelime (for , while , if ,switch) olmadığını anladık token değerine ise değişken yazdık.Lexical Analysis işlemi tamamlandı.


Yazar : Emrah Kahraman

Bilgisayar Mühendisi

“Lexical Analysis – Sözcüksel Analiz” için 1 Yorum

  1. merve özbek dedi ki:

    Merhaba yazınız için teşekkürler .Ben javada comment kısmının lexeme kodunu nasıl yapabileceğimi sormak istiyorum ?

Lexical Analysis – Sözcüksel Analiz Yazısı için Yorum Yapabilirsiniz

Kan Bağışı
Sponsor
Alexa
Hakkımda
Bağlantılar