BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ Dil Çevrimi (Hafta4) 1.

Slides:



Advertisements
Benzer bir sunumlar
Sözcüksel Çözümleme/Analiz (Lexical Analysis)
Advertisements

Hafta 7: Öz Türleri ve Fonksiyonları BBY 306 Dizinleme ve Öz Hazırlama.
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.
Hat Dengeleme.
SAYISAL DEVRELER BÖLÜM-2 Sayı Sistemleri ve Kodlar
. Bologna Sürecinde İç Denetçilerin Rolü (YÖK Düzeyinde) Hazırlayan: Süreyya SÜZEN Yükseköğretim Kurulu Başkanlığı İç Denetçisi.
% A10 B20 C30 D25 E15 Toplam100.  Aynı grafik türü (Column-Sütun) iki farklı veri grubu için de kullanılabilir. 1. Sınıflar2. Sınıflar A1015 B20 C3015.
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Bölüm Hedefi Programlama dillerinin tanımı, Dillerin kuşaklara ayrılması Programlama dillerinin sınıflandırılması, Programlama dilleri değerlendirilmesinde.
TC Windows Editörü DevC++. KURULUM PROGRAMIN KURULACAĞI YER BURADA BELİRLENİYOR.
Öğretim  Öğrenci gelişimini amaçlayan, öğrenmenin başlatılması, sürdürülmesi ve gerçekleştirilmesi için düzenlenen planlı etkinliklerden oluşan bir süreçtir.
BSE 207 Mantık Devreleri Sayı sistemleri Sakarya Üniversitesi.
9. HAFTA 25 Nisan2016. Fonksiyon M-Dosyaları Fonksiyon dosyaları ilk satırda “function” kelimesi bulunan “.m” uzantısı bulunan dosyalardır. MATLAB içinde.
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.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Bölüm 2 C Dilinin Temelleri
Istatistik I Fırat Emir.
Proje Dosyası - Belgeleme - Raporlama
C Programlama Dili Çağdaş Hakan Aladağ.
Algoritma ve Programlamaya Giriş
PROGRAMLI ÖĞRETİM Tanımı:
YAZILIM İşletim Sistemleri Uygulama Programları Programlama Dilleri
T- Testİ: ORTALAMALAR ARASI FARKLARIN TEST EDİLMESİ
Yapay Sinir Ağı Modeli (öğretmenli öğrenme) Çok Katmanlı Algılayıcı
Entegre Müfredat Modeli
DİL ÇEVRİMİ Yüksek düzeyli bir dilde yazılmış bir program ancak makine diline çevrilerek bir bilgisayarda çalıştırılabilir.
ETİKET.
BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı
SAĞLIK KURUMLARINDA KARAR VERME YÖNTEMLERİ
Kumaşların Sınıflandırılması/Dokuma Kumaşlar
BİYOİNFORMATİK NEDİR? BİYOİNFORMATİKTE KULLANILAN SINIFLAMA YÖNTEMLERİ
STORAGE BÜŞRA KARADENİZ
ÖZELLİK FAKTÖR KURAMI.
Swİtch çeşİtlerİ – GÖKÇE TENEKECİ.
Pascal’da Kullanılan Standart Prosedür ve Fonksiyonlardan Bazıları
Bilgisayar Mühendisliğine Giriş
BİLGİSAYAR programlama II
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
NİŞANTAŞI ÜNİVERSİTESİ
Arduino Programlama Dili
MİKROİŞLEMCİLER VE MİKROBİLGİSAYARLAR
TEKNOLOJİ VE TASARIM DERSİ 7.D.1. Özgün Ürünümü Tasarlıyorum.
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
ELEKTRİK DEVRE TEMELLERİ
Fortran Proglama Dili’nin Esasları
Oyun İçine Gömülü Öğretim
Bilgisayar Bilimi Koşullu Durumlar.
KARMA YÖNTEM.
Tezin Olası Bölümleri.
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
6. DÖNGÜ (TEKRARLAMA) DEYİMLERİ
Bilgisayar Bilimi Fonksiyon Yazma.
Değerler ve Değişkenler
Ders 2: Yazılım Geliştirme
Dünya Üzerine Yayılmış Çok-Kullanıcılı Çevrim-İçi Eğitsel
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Pascal’da Kullanılan Standart Prosedür ve Fonksiyonlardan Bazıları
NİŞANTAŞI ÜNİVERSİTESİ
Ders İçeriği Nicel araştırma adımları
Bilgehan Arslan, Süreyya Gülnar
Bilimsel Araştırma Yöntemleri
Ortam-Bağımsız Gramerler (OBG)
Bilimsel araştırma türleri (Deneysel Desenler)
Sunum transkripti:

BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ Dil Çevrimi (Hafta4) 1

DİL ÇEVRİMİ  Yüksek düzeyli bir dilde yazılmış bir program ancak makine diline çevrilerek bir bilgisayarda çalıştırılabilir. 2

? High-level source code Low-level machine code 3

Yüksek düzeyli bir dilde yazılmış kaynak kodun makine diline (Hedef kod) dönüştürülmesi zorunlulu ğ u Dil çevirici yazılımların oluşturulmasına neden olmuştur. 4 Derleyiciler içerisinde derlenen programla ilgili hata ve tanımlama ile ilgili bilgiler barındırmaktadır. Örnek

program gcd(input, output); var i, j: integer; begin read(i, j); while i <> j do if i > j then i := i – j; else j := j – i; writeln(i)end. program gcd(input, output); var i, j: integer; begin read(i, j); while i <> j do if i > j then i := i – j; else j := j – i; writeln(i)end. Compilation 5

program gcd(input, output); var i, j: integer; begin read(i, j); while i <> j do if i > j then i := i – j; else j := j – i; writeln(i)end DERLEYİCİ 6

Translator Source language program Object language program 7 Örnek

 Dönüşüm için derleme ve yorumlama olmak üzere iki temel yöntem vardır. Bir yorumlayıcı, bir programın her deyimini birer birer makine diline çevirerek çalıştırır. Derleyici, bir programlama dilinde yazılmış bir kaynak kod için o koda eşde ğ er olan makine dilinde bir program oluşturur. 8

YorumlayıcıYorumlayıcı 9 DerleyiciDerleyici

#include using namespace std; int main() 10

11

12

Derleme Süreci  Derleme sürecinin başlangıcında derleyiciye verilen yüksek düzeyli bir programlama dili deyimlerini içeren programa, kaynak (source) program, derleme sürecinin sonucunda oluşan makine dilindeki programa ise amaç (object) program adı verilir. 13 Örnek

Derleme süreci  Derleyicinin çalışması sırasında geçen zamana derleme zamanı (compile time) denir.  Hedef programların çalışması sırasında geçen zamana çalışma zamanı (run time) adı verilir. 14

15

Sadeleştirilmiş Derleyici Yapısı Metinsel (Lexical) analiz Ayrıştırma Ara Kod Üretimi Kod üretimi Source code (Karakter Dizisi) if (b == 0) a = b; Token dizisi Soyut Sözdizim Ağacı Ara Kod Assembly Kodu CMP CX,0 CMOVZ DX,CX Ön Uç (makine bağımsız) Arka uç (makine bağımlı) 16

Metinsel Analiz-Scanner  Derleme sürecindeki ilk ve en uzun süren aşamadır.  Bir derleyicinin ön ucunda yer alan metinsel çözümleyici (lexical analyzer), bir kaynak programı bir dizi token dizisine çevirir.  Regüler ifade aracı kullanır 17 Örnek

Scanner program gcd (input, output); var i, j : integer; begin read (i, j); while i <> j do if i > j then i := i - j else j := j - i; writeln (i) end. program gcd ( input, output ) ; var i, j : integer ; begin read ( i, j ) ; while i <> j do if i > j then i := i - j else j := i - i ; writeln ( i ) end. 18

Syntax Analiz if (b == 0) a = b; if(b==0)a=b; Sözdizim Çözümleyici (ayrıştırıcı) if === b0ab ayrıştırma ağacı Sözcük Çözümleyici (tarayıcı) 19 Örnek

Ayrıştırma (Parser) yöntemleri  Ayrıştırıcı bir sözcük katarının dilin gramer kuralları ile türetilebilirliğini inceler ve sözcük katarına ilişkin bir ayrıştırma ağacı oluşturur  İki yol vardır. Yukarıdan-aşağıya (top-down) Aşağıdan-yukarıya (bottom-up) 20

Top-Down S+E ( S ) S + E 5 E 2 E 1 ( S ) S + E 4E S 3 21

Sembol Tablosu  Derleme sürecinde programdaki her tanımlayıcı için bir eleman içeren sembol tablosu oluşturulur. Sembol tablosu, derleme sürecindeki çeşitli aşamalarda kullanılır ve güncellenir.  Bir tanımlayıcı kaynak programda ilk kez bulundu ğ unda, o tanımlayıcı için sembol tablosunda bir eleman oluşturulur. Aynı tanımlayıcının daha sonraki kullanımları için ilgili token, aynı sembol tablosu elemanına başvuru içerir.  Metinsel çözümleme aşamasının sonunda, programdaki token'lar ve her token'ın özelliklerinin tutuldu ğ u sembol tablosu elemanına işaret edilen göstergeleri içeren token dizisi oluşturulur 22

Sembol tablosu Ortalama := toplam / 10 Ortalama(identifier,1)tanımlayıcı :=(atama,nil)Atama i ş lemcisi toplam(identifier, 2)Tanımlayıcı /(bolme,nil)Bölme i ş lemcisi 10(tamsayı, 3)tamsayı 23

Anlam Çözümleme  Anlam çözümleme, kaynak program için sözdizim çözümleme sırasında oluşturulmuş ayrıştırma a ğ acı kullanılarak, soyut bir programlama dilinde bir program oluşturulmasıdır. 24

Anlam Çözümleme 25

Soyut Dil  Anlam çözümleme sonucunda üretilen kod için kullanılan ara diller, genel olarak, üst düzeyli bir birleştirici diline benzerler. Bu soyut dil, kaynak dilin veri türleri ve işlemleriyle uyumlu olacak şekilde tasarlanmış, hayali bir makine için bir makine dili olup, derleyicinin kaynak ve amaç dilleri arasında bir ara adım oluşturur. 26 Örnek

Kod Oluşturma  Soyut dilde ifade edilen kodu alınarak belirli bir bilgisayar için makine kodunu oluşturulur.  Derleyicinin ön ucu programlama diline ba ğ ımlı, arka ucu ise bilgisayara ba ğ ımlıdır. 27 Örnek

Eniyileme (Optimizasyon)  İ ste ğ e ba ğ lı olarak ara kod kısmında iyileştirmeler yapılabilir.  Buradaki çalışma bir programın daha etkin olarak çalışacak bir eşde ğ er programa dönüştürülmesi için yapılır. 28 Örnek

Dil Çevrim Yöntemlerinin Karşılaştırılması ÇeviriciZamanHafızaHata Yakalama Derleyici +-- Yorumlayıcı

Taşınabilir Kod  Dil çevriminde bütünüyle yorumlama ve bütünüyle derleme yöntemleri, iki uç durumdur. Bazı programlama dilleri, iki yöntemin birleştirilmesi ile gerçekleştirilirler.  Bir program, kaynak program üzerinde basit düzenlemeler yapılarak bir sanal makinenin daha sonra yorumlanacak olan makine kodu olarak nitelenebilen bir ara koda çevrilebilir. Bu çözüm, a ğ ırlıklı olarak derlemeye dayanır ve farklı makinelerde çalıştırılabilen taşınabilir kod üretmek amacıyla kullanılabilir. 30

Taşınabilirlik Ara kodAra kod 31

 Java dili bu tür dil çevrimini uygulamaktadır. Java programları, Java bytecode'u adı verilen bir ara koda dönüştürüldükten sonra yorumlanır. 32

Bölüm Özeti  Dil çevrimi  Dil çevriminin Aşamaları  Dil çevrim Yöntemleri  Dil çevrim yöntemlerinin karşılaştırılması 33

Örnek Örnek read A read A read B read B sum := A + B sum := A + B write sum write sum write sum / 2 write sum / 2 34 Geri

Metinsel Analiz (Lexical Analysis)  Tokens: id = letter ( letter | digit ) * [ except "read" and "write" ] literal = digit digit * ":=", "+", "-", "*", "/", "(", ")“ $$$ [end of file] 35 Geri

Örnek P Dili 36

Sözdizim Analizi (Syntax Analysis)  EBNF -> $$$ -> $$$ -> | E -> | E -> id := | read | write -> id := | read | write -> | -> | -> -> <factor -> ( ) | id | literal -> ( ) | id | literal -> + | - -> + | - -> * | / -> * | / 37 Geri

Örnek Amaç Programı 38 Geri

Ara Kod Dönüşümü  Intermediate code: read read pop A pop A read read pop B pop B push A push A push B push B add add pop sum pop sum push sum push sum write write push sum push sum push 2 push 2 div div write write 39

Ara Kod Dönüşümü  Target code:.data.data A:.long 0 A:.long 0 B:.long 0 B:.long 0 sum:.long 0 sum:.long 0.text.text main: jsr read main: jsr read movl d0,d1 movl d0,d1 movl d1,A movl d1,A jsr read jsr read movl d0,d1 movl d0,d1 movl d1,B movl d1,B movl A,d1 movl A,d1 40 Geri

Kod üretimi movl B,d2 movl B,d2 addl d1,d2 addl d1,d2 movl d1,sum movl d1,sum movl sum,d1 movl sum,d1 movl d1,d0 movl d1,d0 jsr write jsr write movl sum,d1 movl sum,d1 movl #2,d2 movl #2,d2 divsl d1,d2 divsl d1,d2 movl d1,d0 movl d1,d0 jsr write jsr write 41 Geri

Sembolik yazım kağıt örneği 42 Geri

C Derleme yapısı 43 Geri

Çevirici yapısı 44 Geri

Örnek kod optimizasyonu 45 Geri