Sözcüksel analiz: Revizyonlar arasındaki fark

[kontrol edilmiş revizyon][kontrol edilmemiş revizyon]
İçerik silindi İçerik eklendi
k Superyetkin, Jeton (yazılım) sayfasını Sözcüksel analiz sayfasına taşıdı: Kapsayıcı başlık
Mertcandav (mesaj | katkılar)
Şablon bildirimi kaldırıldı ve içerik genişletildi.
1. satır:
[[Bilgisayar bilimi]]<nowiki/>nde, Lexer sözcüksel analiz gerçekleştiren program parçasının adıdır. Türkçede direkt çevirisinin yapılabileceği doğru bir kelime olmayan terimlerden biri denebilir. Sözcüksel analiz kaynak kod üstünde gerçekleştirilen bir eylemdir. Sözcüksel analiz sonucunca kaynak kodun program tarafından incelenip ayrıştırılarak anahtar kelime, operatör ya da tanımlayıcılar gibi her bir ögesinin jeton olarak temsili elde edilir.
[[Bilgisayar bilimi]]nde '''sözcüksel çözümleme''' ya da '''jetonlaştırma''' bir [[bilgisayar programı]]ndaki ifadelerin anlamlı [[Dize (bilgisayar bilimi)|dizelere]] dönüştürülmesine verilen addır.
 
Sözcüksel analizin nasıl gerçekleştirileceği elbette [[yazılım geliştirici]]<nowiki/>nin [[algoritma]] tasarımına kalmıştır. Her bir jeton, sözcüksek analiz gerçekleştirilirken belirli bir anlam ifade etmesi için lexer tarafından oluşturulur. Bahsi geçen anlamı kazanabilmesi için her bir jetona belirli veriler atanmalıdır. En önemli veri jetonun temsil ettiği ögenin tipidir. Bu bir tür kimliktir, her bir tür için benzersiz bir tamsayı ideal bir seçimdir. Bu tamsayı değerine göre jetonun bir anahtar kelime, operatör, tanımlayıcı ya da farklı bir şey olduğu karakterize edilir. İkinci veri ise ögenin türüdür. Örneğin jeton bir operatör lakin hangi operatör, bunun için metin türünde bir tür verisi tutmak ideal bir seçimdir. Bunların yanı sıra yazılım geliştiricinin yazılım tasarımına göre satır ve sütün verileri, hangi [[Kaynak kodu|kaynak kod]] dosyasından ayrıştırıldığı gibi ek bilgiler de depolanabilir. Karakterizasyon yaklaşımı olarak operatör, anahtar kelime gibi belirli bir grubu temsil etmek yerine direkt olarak her bir anahtar kelime, operatör ve diğer dil ögelerine benzersiz bir kimlik tamsayısı ataması da gerçekleştirilebilir.
 
Lexer algoritması dilin tasarımına göre değişiklik göstermelidir. Örneğin [[Python]] gibi [[sözdizim]]<nowiki/>sel olarak girintiye (indention) dayalı ise, her bir girinti için jeton oluşturma ya da farklı bir yaklaşım benimsenebilir. Aksi halde bu tarz karakterler anlam ifade etmiyorsa, boşluk karakterlerinin atlanması gerekebilir. Mantıksal olarak tanımlanamayan bir jeton hata sebebi olmalıdır.
 
== Jeton ==
Jeton, bir programın [[derleyici]] için anlamlı en küçük parçasıdır. Programın jetonlara ayrılması, derleyicinin programı [[Makine dili|kendi diline]] çevirebilmesi açısından önemlidir. Jetonlar birbirlerinden genellikle boşluk karakteri ile ayrılırlar. Boş satır, yeni satır ya da açıklama gibi öğeler de jetonları birbirinden ayırmaya yarar. ''a = i + j örneğinde jetonlar "a", "=", "i", "+" ve "j" karakterleridir.
 
=== Jeton örnekleri ===
{{yazılım-taslak}}
{| class="wikitable"
|+
!Tip
!Tür (Jeton Değeri)
|-
|Anahtar Kelime
|{{Code|kod=while|dil=c++}}{{Code|kod=for|dil=c++}}{{Code|kod=case|dil=c++}}{{Code|kod=else|dil=c++}}
|-
|Operatör
|{{Code|kod=<|dil=c++}}{{Code|kod===|dil=c++}}{{Code|kod=<<|dil=c++}}{{Code|kod=&&|dil=c++}}
|-
|Tanımlayıcı
|{{Code|kod=name|dil=c++}}{{Code|kod=surname|dil=c++}}{{Code|kod=pi_number|dil=c++}}{{Code|kod=counter|dil=c++}}
|-
|Yorum
|{{Code|kod=/* A comment */|dil=c++}}
|-
|Sabit Değer (Literal)
|{{Code|kod=true|dil=c++}}{{Code|kod='a'|dil=c++}}{{Code|kod="Hello World"|dil=c++}}{{Code|kod=3.14|dil=c++}}
|}
 
== Ayrıca bakınız ==
 
* [[Kaynak kodu|Kaynak kod]]
* [[Derleyici]]
* [[Yorumlayıcı]]
* [[Algoritma]]
 
[[Kategori:Derleyici yapımı]]