Bölüm 5 · Simülasyon

Dizgi Ayrıştırma: Sonlu Durum Makinesi

← Bölüm 5

Kural: ilk karakter harf ya da alt çizgi olmalıdır.

Durum Diyagramı

harf, _ rakam, diğer, son harf, rakam, _ son diğer BAŞLA TANIM KABUL RET

Geçiş Tablosu

Geçerli DurumKarakter SınıfıSonraki Durum
BAŞLAHARFTANIM
BAŞLAALT_ÇİZGİTANIM
BAŞLARAKAMRET
BAŞLADİĞERRET
TANIMHARFTANIM
TANIMRAKAMTANIM
TANIMALT_ÇİZGİTANIM
TANIMDİĞERRET

    Dizgi Ayrıştırma: Sonlu Durum Makinesi

    Bir tanımlayıcı; durumlar, karakter sınıfları ve açık geçişlerle adım adım doğrulanır.

    Kullanım

    • Örnek bir girdi (en çok 24 karakter) yazın ve Girdiyi Yükle düğmesine basın.
    • Adım İlerle bir karakter okur, Otomatik Oynat makine kabul ya da ret verene kadar sürer, Sıfırla girdiyi yeniden yükler.
    • Sarı hücre: okunacak sonraki karakter. Yeşil hücreler: okunmuş karakterler. Kırmızı hücre: retti doğuran karakter.
    • Durum diyagramı ve geçiş tablosu az önce izlenen geçişi vurgular.

    Tanımlayıcı kuralı

    Bir tanımlayıcı harf ya da alt çizgiyle başlar; kalan karakterler harf, rakam ya da alt çizgidir. Her karakter önce bir karakter sınıfına (HARF, RAKAM, ALT_ÇİZGİ, DİĞER) eşlenir; sonraki durum yalnız geçerli duruma ve bu sınıfa bağlıdır.

    • BAŞLA: henüz bir şey okunmadı. HARF ya da ALT_ÇİZGİ TANIM durumuna geçirir; RAKAM ya da DİĞER ret verir.
    • TANIM: şimdiye kadar geçerli bir tanımlayıcı okundu. HARF, RAKAM ve ALT_ÇİZGİ makineyi TANIM durumunda tutar; DİĞER ret verir.
    • Girdi bittiğinde dizgi yalnız makine TANIM durumundaysa kabul edilir; boş girdi reddedilir.

    Neden durum makinesi?

    Derleyici ve yorumlayıcılardaki sözcüksel çözümleyiciler (lexer) tanımlayıcıları, sayıları ve anahtar sözcükleri tam da bu tür bir deterministik sonlu otomatla tanır: karakter başına bir tablo bakışı, geri izleme yok.

    Karmaşıklık

    n uzunluğundaki girdi için O(n) zaman (karakter başına bir geçiş) ve O(1) ek bellek; geçiş tablosunda |durumlar| × |sınıflar| kayıt vardır.