Sözcüksel Çözümleme/Analiz (Lexical Analysis)

Slides:



Advertisements
Benzer bir sunumlar
Derleyici Araçları FLEX & BISON
Advertisements

Derleyici Teorisine Giriş
Sözcüksel Çözümleme/Analiz (Lexical Analysis)
Bölüm: 0.
Algoritma.  Algoritma, belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.  Başka bir deyişle; bir sorunu çözebilmek için gerekli olan.
Veri Tabanı Yönetim Sistemleri Hafta 1. 2 Temel Kavramlar Veri Olguların, kavramların, veya talimatların, insan tarafından veya otomatik yolla iletişim,
Hat Dengeleme.
Bilimsel bilgi Diğer bilgi türlerinden farklı
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
DONANIM VE YAZILIM.
TC Windows Editörü DevC++. KURULUM PROGRAMIN KURULACAĞI YER BURADA BELİRLENİYOR.
Paragraf Nedir? & Herhangi bir yazının bir satırbaşından öteki satırbaşına kadar olan bölümüdür. & Duygu, düşünce, istekleri anlatım tekniklerinden yararlanarak.
İÇİNDEKİLER GRID COMPUTING NEDİR? NASIL ÇALIŞIR? GRID COMPUTING YAPISI
Bağlama ve Kapsam Kavramları
Yazılım Mühendisliği1[ 3.hft ]. Yazılım Mühendisliği2 Yazılım İ sterlerinin Çözümlemesi Yazılım Yaşam Çevrimi “ Yazılım Yaşam çevrimin herhangi bir yazılım.
EQUIZSHOW.
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
ÇOK BOYUTLU SİNYAL İŞLEME
BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ Dil Çevrimi (Hafta4) 1.
Bölüm 2 C Dilinin Temelleri
Pazarlama İlkeleri.
BİLGİSAYAR PROGRAMLAMA DERSİ
Bilişim Teknolojileri ve Yazılım Dersi
PROJE TABANLI ÖĞRENME ATÖLYESİ
İşlev Açısından Kelime Türleri
FONKSİYONLAR.
C Programlama Dili Çağdaş Hakan Aladağ.
Algoritma ve Programlamaya Giriş
BM-103 Programlamaya Giriş Güz 2016 (3. Sunu)
GENEL MUHASEBE.
YAZILIM İşletim Sistemleri Uygulama Programları Programlama Dilleri
Sözcük (Kelime) Bilgisi
ÜGD MEVZUATI ve TAREKS - II
DİL ÇEVRİMİ Yüksek düzeyli bir dilde yazılmış bir program ancak makine diline çevrilerek bir bilgisayarda çalıştırılabilir.
BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ
EĞİTİMDE MATERYAL TASARIMI VE HAZIRLAMA İLKELERİ
SAĞLIK KURUMLARINDA KARAR VERME YÖNTEMLERİ
BİLGİSAYAR ÇEŞİTLERİ.
ÜRETİM YÖNETİMİ.
Baskı Devre Kartının Üretilmesi
EĞİTİMDE MATERYAL TASARIMI VE HAZIRLAMA İLKELERİ.
Nazlı ÖZTÜRK.
Futbol Yetenek Avcısı AOFScout.
Bilgisayar Mühendisliğine Giriş
PARAMETRİK HİPOTEZ TESTLERİ
Bölüm 7 İfadeler ve atamalar.
NİŞANTAŞI ÜNİVERSİTESİ
MİKROİŞLEMCİLER VE MİKROBİLGİSAYARLAR
Bölüm 4: Kontrol Yapıları I (Seçim Yapma)
NİŞANTAŞI ÜNİVERSİTESİ
Türkiye Atıf Dizini nedir?
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Koşullu Durumlar.
İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar)
Sonlu Özdevinirlere Giriş
NİŞANTAŞI ÜNİVERSİTESİ
6. DÖNGÜ (TEKRARLAMA) DEYİMLERİ
Değerler ve Değişkenler
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
BLM-111 PROGRAMLAMA DİLLERİ I Ders-10 Diziler
NİŞANTAŞI ÜNİVERSİTESİ
MTM216 GÖRSEL PROGRAMLAMA
MTM216 GÖRSEL PROGRAMLAMA
Onur Güngör, Tunga Güngör
OLASILIK Uygulamada karşılaşılan olayların birçoğu kesin olmayan diğer bir ifadeyle belirsizlik içeren bir yapıya sahiptir. Olasılık kavramı kesin olmayan.
Bilimsel Araştırma Yöntemleri
Ölçme, Değerlendirme ve Durum Belirleme - devam
NİŞANTAŞI ÜNİVERSİTESİ
Bilimsel araştırma türleri (Deneysel Desenler)
Sunum transkripti:

Sözcüksel Çözümleme/Analiz (Lexical Analysis) http://yilmazkilicaslan.trakya.edu.tr/teaching/lexical_analysis.ppt

Programlama Dillerinin Gerçekleştirimleri (Implementation) Programlama dillerinin gerçekleştirimleri genellikle iki farklı yolla olur: Yorumlayıcılar (Interpreter) bir programın az veya hiç ön işleme yapılmadan, platformdan bağımsız olarak çalıştırılmasını sağlar. Derleyiciler (Compiler) programı yoğun bir ön işlemeden geçirir ve 2-20 kat arası daha hızlı çalışmayı sağlar. Platforma özgü kod üretirler. Bazı dillerde bu iki yolun bir kombinasyonu da (hibrit) kullanılır.

Otomatik Çeviri Paradigması Ara Dil transfer analiz üretim doğrudan çeviri Kaynak Dil Hedef Dil

Modern Derleyiciler Günümüzde derleyiciler de otomatik çeviri paradigmasına uygun olarak geliştirilirler. Bu sebeple iki ana bileşenden oluşurlar: Analiz işlemleri için kullanılan ön uç (front end), kaynak programlama dilini işler ve bundan bir ara gösterim elde eder. Üretim aşaması ise arka uç (back end) bileşeninde kodun optimizasyonu ve hedef dile dönüştürülmesiyle gerçekleşir. Hedef dil genelde assembly olur. Böylece yüksek seviye bir programlama dilinin makine düzeyine indirgenmesi sağlanır.

Bir Derleyicinin Genel Yapısı Kaynak Dil Lexical Analyzer (Lexer) (Tokenizer) Syntax Analyzer (Parser) Ön Uç Semantic Analyzer Ara Kod Üreticisi Ara Kod Kod Optimizasyonu Arka Uç Hedef Dil Üreticisi Hedef Dil

Derleme Örneği Kaynak Dil Lexical Analyzer Syntax Analyzer cur_time = start_time + cycles * 60 Lexical Analyzer Lexical Analiz: ID(1) ASSIGN ID(2) ADD ID(3) MULT INT(60) Syntax Analyzer Anlamsal Analiz: ASSIGN ID(1) ADD ID(2) MULT ID(3) int2real INT(60) Sözdizim Analizi: ASSIGN ID(1) ADD ID(2) MULT ID(3) INT(60) Semantic Analyzer Ara Kod Üreticisi Ara Kod Kod Optimizasyonu Hedef Dil Üreticisi Hedef Dil

Derleme Örneği Kaynak Dil Lexical Analyzer Syntax Analyzer Ara Kod: temp1 = int2real(60) temp2 = id3 * temp1 temp3 = id2 + temp2 id1 = temp3 Optimize Edilmiş Kod: temp1 = id3 * 60.0 id1 = id2 + temp1 Lexical Analyzer Hedef Dil: MOVF id3, R2 MULF #60.0, R2 MOVF id2, R1 ADDF R2, R1 MOVF R1, id1 Syntax Analyzer Optimizasyon: Semantic Analyzer Adım 1: temp1 = 60.0 temp2 = id3 * temp1 temp3 = id2 + temp2 id1 = temp3 Ara Kod Üreticisi Ara Kod Adım 2: temp2 = id3 * 60.0 temp3 = id2 + temp2 id1 = temp3 Kod Optimizasyonu Hedef Dil Üreticisi Adım 3: temp2 = id3 * 60.0 id1 = id2 + temp2 Hedef Dil

Lexical Analiz (1) if (i==j); z=1; else; z=0; endif; Yukarıdaki kod parçası bizim için anlamlı ifadelerden oluşsa da bilgisayar için aşağıdaki gibi bir karakter katarından başka bir şey ifade etmez. i f _ ( i = = j ) ; \n \t z = 1 ; \n e l s ; \t z = n d i f

Lexical Analiz (2) Yüksek seviyeli bir dille yazılan kodun çalıştırılabilmesi için en düşük seviyede bilgisayarın işleyebileceği komutlar dizisi haline getirilmesi gereklidir. Bu sebeple kaynak kodu oluşturan karakter katarı anlamlı alt parçalara ayrıştırılmalıdır. Alt parçalara token, bunları ayrıştırma işlemine de lexical analiz denir. Lexical analiz işleminin çıktısı olan tokenlar bir sonraki aşama olan sözdizimsel analiz bileşenine aktarılır.

Lexical Analiz (3) Token sözdizimsel bir kategori belirtir. Bu kategoriler doğal diller için “isim”, “sıfat”, “fiil” vb. olabilirken, programlama dilleri için “matematiksel sembol” veya “anahtar kelime” gibi alt ifadeler olurlar. Token belirten bir alt karakter katarı lexeme olarak adlandırılır. Programlama dili içinde kullanılması mümkün olan tüm lexemeler tanımlanırken örüntüler (pattern) kullanılır. Örüntüler düzenli ifadeler (regular expressions) kullanılarak tanımlanır. Bu aşamada düzenli ifadelerin kullanılmasının sebebi işlenen karakter katarı içinde kabul edilebilir bir token bulabilmenin bazen geriye dönük arama da gerektirebilmesidir.

Bir lexical analiz aracı şu 3 şeyi yapabilmelidir: Bütün boşlukları ve açıklamaları temizlemeli, Karakter katarı içindeki tüm tokenlar bulunmalı, Bulunan token için lexeme ve bulunduğu satır numarası gibi özellikler döndürülmelidir. Lexeme Token sum IDENTIFIER = ASSIGN_OP 3 NUMBER + ADD_OP 2 NUMBER ; SEMICOLON sum=3+2;

Düzenli İfadeler Sonlu durum otomatları (FSA) ile tanımlanabilen dilleri ifade etmede kullanılırlar. Eğer A bir düzenli ifade ise, L(A) bu ifade ile tanımlanan dildir. L(“if”|”then”|”else”) dili sadece “if”, “then” ve “else” ifadelerini tanıyabilen bir dil belirtir. Lexical analiz işleminde tarayıcı (scanner), kaynak kodun içinde önceden düzenli ifadelerle tanımlanmış anahtar kelimeleri arar ve bunların token tiplerini belirler.