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

İçindekiler:

Anonim

Sözcüksel Analiz nedir?

LEKSİK ANALİZ , derleyici tasarımının ilk aşamasıdır. Bir Lexer, cümleler biçiminde yazılan değiştirilmiş kaynak kodunu alır. Başka bir deyişle, bir karakter dizisini bir dizi jetona dönüştürmenize yardımcı olur. Sözcük analizcisi bu sözdizimini bir dizi simgeye böler. Kaynak kodda yazılan fazladan boşlukları veya yorumları kaldırır.

Sözcüksel analiz gerçekleştiren programlara sözcüksel çözümleyiciler veya sözcükler denir. Bir lexer, belirteç veya tarayıcı içerir. Sözcüksel analizci belirtecin geçersiz olduğunu tespit ederse, bir hata oluşturur. Kaynak koddan karakter akışlarını okur, yasal belirteçleri kontrol eder ve istendiğinde verileri sözdizimi çözümleyicisine iletir.

Misal

How Pleasant Is The Weather?

Bu örneğe bakın; Burada, How Pleasant, The, Weather, Is beş kelime olduğunu kolayca anlayabiliriz. Ayırıcıları, boşlukları ve noktalama işaretlerini tanıyabildiğimiz için bu bizim için çok doğal.

 HowPl easantIs Th ewe ather?

Şimdi bu örneğe bir bakın, bunu da okuyabiliriz. Ancak, Ayırıcılar Tek Yerlere konulduğu için biraz zaman alacaktır. Size hemen gelen bir şey değil.

Bu eğitimde öğreneceksiniz

  • Temel Terminolojiler:
  • Sözcük Çözümleyici Mimarisi: Belirteçler nasıl tanınır?
  • Sözcüksel analizörün rolleri
  • Sözcüksel Hatalar
  • Sözcüksel Analizörde Hata Kurtarma
  • Sözcüksel Çözümleyici ve Ayrıştırıcı
  • Sözcüksel ve Ayrıştırıcı neden birbirinden ayrılıyor?
  • Sözcüksel analizin avantajları
  • Sözcüksel analizin dezavantajı

Temel Terminolojiler

Sözcükbirim nedir?

Sözcük birimi, bir simgenin eşleşme modeline göre kaynak programa dahil edilen bir karakter dizisidir. Bir belirteç örneğinden başka bir şey değildir.

Belirteç nedir?

Belirteç, kaynak programdaki bir bilgi birimini temsil eden bir karakter dizisidir.

Desen nedir?

Bir kalıp, belirteç tarafından kullanılan bir açıklamadır. Belirteç olarak kullanılan bir anahtar sözcük durumunda, kalıp bir karakter dizisidir.

Sözcük Çözümleyici Mimarisi: Belirteçler nasıl tanınır?

Sözcüksel analizin ana görevi, koddaki girdi karakterlerini okumak ve belirteçler üretmektir.

Sözcüksel analizör, programın tüm kaynak kodunu tarar. Her bir jetonu tek tek tanımlar. Tarayıcılar genellikle yalnızca bir ayrıştırıcı tarafından talep edildiğinde belirteç üretmek için uygulanır. İşte bu nasıl çalışır?

  1. "Get next token", ayrıştırıcıdan sözcüksel çözümleyiciye gönderilen bir komuttur.
  2. Sözlü analizör bu komutu aldığında, bir sonraki jetonu bulana kadar girişi tarar.
  3. Jetonu Parser'a döndürür.

Sözcüksel Çözümleyici, bu belirteçleri oluştururken boşlukları ve yorumları atlar. Herhangi bir hata varsa, Sözcüksel analizör bu hatayı kaynak dosya ve satır numarası ile ilişkilendirecektir.

Sözcüksel analizörün rolleri

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

  • Simgeyi simge tablosunda tanımlamaya yardımcı olur
  • Kaynak programdan beyaz boşlukları ve yorumları kaldırır
  • Hata mesajlarını kaynak programla ilişkilendirir
  • Kaynak programda bulunursa makroları genişletmenize yardımcı olur
  • Kaynak programdan giriş karakterlerini okuyun

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

Sözcüksel Analizöre beslenen aşağıdaki kodu göz önünde bulundurun

#include int maximum(int x, int y) {// This will compare 2 numbersif (x > y)return x;else {return y;}}

Oluşturulan Jeton örnekleri

Lexeme Jeton
int Anahtar kelime
maksimum Tanımlayıcı
( Şebeke
int Anahtar kelime
x Tanımlayıcı
, Şebeke
int Anahtar kelime
Y Tanımlayıcı
) Şebeke
{ Şebeke
Eğer Anahtar kelime

Nontokens örnekleri

Tür Örnekler
Yorum Yap // Bu 2 sayıyı karşılaştıracak
Önişlemci direktifi #include
Önişlemci direktifi #define NUMS 8,9
Makro NUM
Beyaz boşluk / n / b / t

Sözcüksel Hatalar

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

  • Sözcük hataları çok yaygın değildir, ancak bir tarayıcı tarafından yönetilmelidir
  • Tanımlayıcıların, operatörlerin, anahtar kelimelerin yanlış yazılması sözcük hataları olarak kabul edilir
  • Genel olarak, bir sözcük hatası, çoğunlukla bir belirtecin başında bazı yasadışı karakterlerin ortaya çıkmasından kaynaklanır.

Sözcüksel Analizörde Hata Kurtarma

Aşağıda en yaygın birkaç hata kurtarma tekniği verilmiştir:

  • Kalan girişten bir karakter kaldırır
  • Panik modunda, iyi biçimlendirilmiş bir jetona 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 karakteri transpoze edin

Sözcüksel Çözümleyici ve Ayrıştırıcı

Sözcüksel Analizör Ayrıştırıcı
Tarama Giriş programı Sözdizimi analizi gerçekleştirin
Jetonları Tanımlayın Kodun soyut bir temsilini oluşturun
Sembol Tablosuna jeton ekle Sembol tablosu girişlerini güncelleyin
Sözcük hataları üretir Kaynak kodunun ayrıştırma ağacını oluşturur

Sözcüksel ve Ayrıştırıcı neden birbirinden ayrılıyor?

  • Tasarımın basitliği: İstenmeyen simgeleri ortadan kaldırarak sözcük analizi 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
  • Uzmanlık: sözcüksel analiz sürecini iyileştirmek için özel teknikler uygulanabilir
  • Taşınabilirlik: yalnızca tarayıcının dış dünya ile iletişim kurması gerekir
  • Daha yüksek taşınabilirlik: giriş cihazına özgü özellikler lexer ile sınırlıdır

Sözcüksel analizin avantajları

  • Sözcüksel analizci yöntemi, derlenmiş bir ikili çalıştırılabilir kod oluşturmak için bir programcının kodundan ayrıştırılmış verileri kullanabilen derleyiciler gibi programlar tarafından kullanılır.
  • JavsScript, HTML, CSS'den ayrıştırılmış veriler yardımıyla bir web sayfasını biçimlendirmek ve görüntülemek için web tarayıcıları tarafından kullanılır.
  • Ayrı bir sözcük analizcisi, 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 belirteçler şeklinde bölümlemek için önemli ölçüde zaman harcamanız gerekir.
  • Bazı normal ifadelerin anlaşılması PEG veya EBNF kurallarına kıyasla oldukça zordur
  • Lexer'ı ve simge açıklamalarını geliştirmek ve hatalarını ayıklamak için daha fazla çaba gerekiyor
  • Sözlük tablolarını oluşturmak ve jetonları oluşturmak için ek çalışma zamanı ek yükü gereklidir.

Özet

  • Sözcüksel analiz, derleyici tasarımının ilk aşamasıdır
  • Sözcük birimi, bir simgenin eşleşme düzenine göre kaynak programa dahil edilen bir karakter dizisidir.
  • Sözcüksel analizör, programın tüm kaynak kodunu taramak için uygulanır.
  • Sözcüksel analizör, simgeyi simge tablosunda tanımlamaya yardımcı olur
  • Herhangi bir geçerli jetona taranması mümkün olmayan bir karakter dizisi sözcüksel bir hatadır.
  • Kalan girişten bir karakter kaldırılması yararlıdır Hata kurtarma yöntemi
  • Lexical Analyzer, ayrıştırıcı sözdizimi analizi gerçekleştirirken giriş programını tarar
  • İstenmeyen simgeleri ortadan kaldırarak sözcük analizi ve sözdizimi analizi sürecini kolaylaştırır.
  • Sözcüksel analizör, web tarayıcıları tarafından JavsScript, HTML, CSS'den ayrıştırılmış verilerin yardımıyla bir web sayfasını biçimlendirmek ve görüntülemek için kullanılır.
  • Sözcüksel analizci kullanmanın en büyük dezavantajı, lexer tablolarını oluşturmak ve jetonları oluşturmak için ek çalışma süresi ek yüküne ihtiyaç duymasıdır.