Derleyici Tasarımında Örnekle Sözcüksel Analiz (Analizör)

Sözcüksel Analiz Nedir?

Sözcük Analizi derleyici tasarımının ilk aşamasıdır. Bir Lexer, cümleler şeklinde yazılmış değiştirilmiş kaynak kodunu alır. Başka bir deyişle, bir karakter dizisini bir simge dizisine dönüştürmenize yardımcı olur. Sözcüksel analizci bu sözdizimini bir dizi simgeye böler. Kaynak kodunda yazılı olan fazladan boşlukları veya yorumları kaldırır.

Derleyici tasarımında Sözcüksel Analiz yapan programlara sözcüksel çözümleyiciler veya sözlükçüler adı verilir. Bir lexer tokenizer veya tarayıcı içerir. Sözcük çözümleyici belirtecin geçersiz olduğunu tespit ederse bir hata oluşturur. Derleyici tasarımında Sözcüksel Çözümleyicinin rolü, kaynak koddan karakter akışlarını okumak, yasal belirteçleri kontrol etmek ve talep edildiğinde verileri sözdizimi çözümleyicisine iletmektir.

Örnek E-posta

How Pleasant Is The Weather?

Bu Sözcüksel Analiz örneğine bakın; Burada Ne Kadar Hoş, Hava, Hava, diye beş kelime olduğunu rahatlıkla anlayabiliriz. Ayırıcıları, boşlukları ve noktalama işaretini tanıyabildiğimiz için bu bizim için çok doğal.

 HowPl easantIs Th ewe ather?

Şimdi bu örneği inceleyin, bunu da okuyabiliriz. Ancak seperatörler Tek Yerlere konulduğu için biraz zaman alacaktır. Bu hemen başınıza gelen bir şey değil.

Temel Terminolojiler

Sözlük birimi nedir?

Bir sözcük birimi, bir belirtecin eşleşen düzenine göre kaynak programa dahil edilen bir karakter dizisidir. Bir belirtecin örneğinden başka bir şey değil.

Jeton nedir?

Derleyici tasarımındaki belirteçler, kaynak programdaki bir bilgi birimini temsil eden karakter dizisidir.

Desen Nedir?

Desen, belirteç tarafından kullanılan bir açıklamadır. Belirteç olarak kullanılan bir anahtar kelime durumunda, kalıp bir karakter dizisidir.

Sözcük Analizcisi Architecture: Tokenlar nasıl tanınır?

Sözlüksel analizin asıl görevi koddaki giriş karakterlerini okumak ve token üretmektir.

Sözcüksel analizör programın tüm kaynak kodunu tarar. Her jetonu tek tek tanımlar. Tarayıcılar genellikle yalnızca bir ayrıştırıcı tarafından talep edildiğinde belirteçler üretmek üzere uygulanır. Derleyici tasarımında belirteçlerin tanınması şu şekilde çalışır:

Sözcük Analizcisi Archidoku
Sözcük Analizcisi Archidoku
  1. “Sonraki jetonu al” ayrıştırıcıdan sözcüksel analizciye gönderilen bir komuttur.
  2. Bu komutu aldıktan sonra sözcüksel analizci, bir sonraki belirteci bulana kadar girişi tarar.
  3. Belirteci Ayrıştırıcıya döndürür.

Lexical analyzer bu belirteçleri oluştururken boşlukları ve yorumları atlar. Herhangi bir hata mevcutsa, Lexical analyzer bu hatayı kaynak dosya ve satır numarasıyla ilişkilendirecektir.

Sözcüksel analizcinin rolleri

Sözcüksel analizör aşağıda verilen görevleri yerine getirir:

  • Simge tablosunda belirtecin tanımlanmasına yardımcı olur
  • Kaynak programdaki beyaz boşlukları ve yorumları kaldırır
  • Hata mesajlarını kaynak programla ilişkilendirir
  • Kaynak programda bulunması durumunda makroları genişletmenize yardımcı olur
  • Kaynak programdan giriş karakterlerini oku

Sözcüksel Analiz Örneği, Belirteçler, Belirteç Olmayanlar

Lexical Analyzer'a verilen aşağıdaki kodu göz önünde bulundurun

#include <stdio.h>
    int maximum(int x, int y) {
        // This will compare 2 numbers
        if (x > y)
            return x;
        else {
            return y;
        }
    }

Oluşturulan Token örnekleri

Sözcükbirimi Simge
int Anahtar kelime
maksimum Tanımlayıcı
( Kullanım
int Anahtar kelime
x Tanımlayıcı
, Kullanım
int Anahtar kelime
Y Tanımlayıcı
) Kullanım
{ Kullanım
If Anahtar kelime

Belirteçsiz Örnekler

Menşei Örnekler
Yorum Yap // Bu 2 sayıyı karşılaştıracak
Önişlemci direktifi #Dahil etmek
Önişlemci direktifi #define NUMS 8,9
Makro SAYILAR
Beyaz boşluk /n /b /t

Sözcük Hataları

Herhangi bir geçerli simgeye taranması mümkün olmayan bir karakter dizisi sözcüksel bir hatadır. Sözcüksel hatayla ilgili önemli gerçekler:

  • Sözcüksel hatalar çok yaygın değildir ancak bir tarayıcı tarafından yönetilmesi gerekir.
  • Tanımlayıcıların, operatörlerin ve anahtar kelimenin yanlış yazılışı sözcüksel hata olarak kabul edilir
  • Genellikle sözcüksel bir hata, çoğunlukla bir belirtecin başında bazı yasa dışı karakterlerin ortaya çıkmasından kaynaklanır.

Sözcük Analizcisi'nde Hata Kurtarma

Burada en yaygın birkaç hata kurtarma tekniği verilmiştir:

  • Kalan girişten bir karakteri kaldırır
  • Panik modunda, iyi biçimlendirilmiş bir simgeye ulaşana kadar ardışık karakterler her zaman göz ardı edilir.
  • Eksik karakteri kalan girişe ekleyerek
  • Bir karakteri başka bir karakterle değiştirme
  • İki seri karakterin transpoze edilmesi

Sözcük Analizcisi ve Ayrıştırıcı

Sözcük Analizcisi Ayrıştırıcı
Tarama Girişi programı Sözdizimi analizi gerçekleştirin
Jetonları Tanımlayın Kodun soyut bir temsilini oluşturun
Belirteçleri Sembol Tablosuna Ekle Sembol tablosu girişlerini güncelle
Sözcüksel hatalara neden oluyor Kaynak kodunun ayrıştırma ağacını oluşturur

Neden Sözcüksel ve Ayrıştırıcıyı ayırmalısınız?

  • Tasarımın basitliği: İstenmeyen belirteçleri ortadan kaldırarak sözcüksel analiz ve sözdizimi analizi sürecini kolaylaştırır.
  • Derleyici verimliliğini artırmak için: Derleyici verimliliğini artırmanıza yardımcı olur
  • Uzmanlaşma: sözcüksel analiz sürecini geliştirmek için özel teknikler uygulanabilir
  • Taşınabilirlik: yalnızca tarayıcının dış dünyayla iletişim kurması gerekir
  • Daha yüksek taşınabilirlik: giriş cihazına özgü özellikler yalnızca sözlükçüyle sınırlıdır

Sözcüksel analizin avantajları

  • Sözcüksel analiz yöntemi, derlenmiş bir ikili çalıştırılabilir kod oluşturmak için bir programcının kodundan ayrıştırılan verileri kullanabilen derleyiciler gibi programlar tarafından kullanılır.
  • Web tarayıcıları tarafından, ayrıştırılmış verilerin yardımıyla bir web sayfasını biçimlendirmek ve görüntülemek için kullanılır. JavsScript, HTML, CSS
  • Ayrı bir sözcük analizörü, görev için özelleştirilmiş ve potansiyel olarak daha verimli bir işlemci oluşturmanıza yardımcı olur

Sözcüksel analizin dezavantajı

  • Kaynak programı okumak ve onu belirteçler biçiminde bölümlemek için önemli ölçüde zaman harcamanız gerekir.
  • PEG veya EBNF kurallarına kıyasla bazı düzenli ifadelerin anlaşılması oldukça zordur
  • Lexer'ı ve belirteç açıklamalarını geliştirmek ve hata ayıklamak için daha fazla çaba gerekiyor
  • Lexer tablolarını oluşturmak ve belirteçleri oluşturmak için ek çalışma zamanı yükü gerekir

ÖZET

  • Sözcüksel analiz derleyici tasarımının ilk aşamasıdır
  • Sözcükbirimleri ve Belirteçler, bir belirtecin eşleşen düzenine göre kaynak programa dahil edilen karakter dizisidir.
  • Programın tüm kaynak kodunu taramak için sözcüksel analizör uygulandı
  • Sözcüksel analizör simge tablosundaki belirteci tanımlamaya yardımcı olur
  • Herhangi bir geçerli simgeye taranması mümkün olmayan bir karakter dizisi sözcüksel bir hatadır
  • Geriye kalan girişten bir karakterin çıkarılması faydalıdır Hata giderme yöntemi
  • Ayrıştırıcı sözdizimi analizi gerçekleştirirken Sözcüksel Çözümleyici giriş programını tarar
  • İstenmeyen belirteçleri ortadan kaldırarak sözcüksel analiz ve sözdizimi analizi sürecini kolaylaştırır.
  • Sözcüksel analizör, web tarayıcıları tarafından bir web sayfasını JavsScript, HTML, CSS'den ayrıştırılmış verilerin yardımıyla biçimlendirmek ve görüntülemek için kullanılır.
  • Lexical analizör kullanmanın en büyük dezavantajı, lexer tablolarını oluşturmak ve belirteçleri oluşturmak için ek çalışma zamanı yüküne ihtiyaç duymasıdır.