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:

- “Sonraki jetonu al” ayrıştırıcıdan sözcüksel analizciye gönderilen bir komuttur.
- Bu komutu aldıktan sonra sözcüksel analizci, bir sonraki belirteci bulana kadar girişi tarar.
- 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.
