Sentaks ve semantik tarifi

Slides:



Advertisements
Benzer bir sunumlar
NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar
Advertisements

KÜMELER BİRLEŞİM KESİŞİM FARK.
Sentaks ve Semantiği tanımlama
VERİ TABANI YÖNETİMİ Ders 11: PL/SQL’e Giriş
Bölüm 4 – Kontrol İfadeleri:1.kısım
4 Kontrol Yapıları: 1.Bölüm.
SQL de Değişken Tanımlama
Elektrik-Elektronik Mühendisliği Bölümü DİZİLER C Programlama Dili Yaz Stajı Cengiz TEPE SAMSUN 2007.
String Kütüphanesindeki Arama Fonksiyonları
Karar ifadeleri ve Döngüler
Bölüm 3 – Yapısal Programlama
T-SQL-2.Konu Akış Kontrolleri.
Yapısal Program Geliştirme – if, if-else
Derleyici Araçları FLEX & BISON
NESNEYE YÖNELİK PROGRAMLAMANIN TEMEL İLKELERİ GENEL BİR BAKIŞ
SQL de Değişken Tanımlama
Nesneye Yönelik Programlama
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
GRAF TEORİSİ Ders 1 TEMEL KAVRAMLAR.
Chapter 4: Making Decisions
Bağlama Duyarlı Diller
Ece Olcay Güneş & S. Berna Örs
Derleyici Teorisine Giriş
1 Diller nasıl yazılmıştır? İki ana strateji: –Yorumlayıcılar - Interpreters (eski ve az çalışılmıştır) –Derleyiciler - Compilers (yeni, daha yoğun çalşılmıştır)
NESNEYE-YÖNELİK PROGRAMLAMA
DÜZENLİ GRAMERLER Yılmaz Kılıçaslan.
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
ÖNERMELER MANTIĞI Yılmaz KILIÇASLAN.
MANTIK BİLİMİNE GİRİŞ VE ÖNERMELER MANTIĞI Yılmaz KILIÇASLAN.
Outline 4.1 Giriş 4.2 Algoritmalar 4.3 Pseudocode 4.4 Kontrol İfadeleri 4.5 if tek-seçimli ifadeler 4.6 if else seçimli ifadeler 4.7 while döngü ifadeleri.
SONLU ELEMANLARA GİRİŞ DERSİ
MANTIK BİLİMİNE GİRİŞ VE ÖNERMELER MANTIĞI Yılmaz KILIÇASLAN.
KÜMELER.
KÜMELER.
Bulanık Mantık Bulanık Mantığın Temel Kavramları
Sentaks (Sözdizim) ve Semantik (Anlam)
BISON (YACC) (Yet Another Compiler Compiler)
Bölüm 3: Sentaks ve Semantiği Tanımlama
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
Biçimsel Diller ve Soyut Makineler
Genel Kavramlar Bölüm - 1. YAZILIM Bilgisayara işlemler yaptırabilmek ve karar verdirtebilmek için yazılan kalıplara denir. Yazılım, genel olarak donanım.
Kümeler Küme, matematiksel anlamda tanımsız bir kavramdır. Bu kavram "nesneler topluluğu veya yığını" olarak yorumlanabilir. Bu tanımdaki "nesne" soyut.
Formel Diller ve Soyut Makineler
Bilgisayar Mühendisliği Bölümü
İnternet Programlama - 2
C Programlama Dili Bilgisayar Mühendisliği.
Bilgisayar ile Çeviri Sistemleri
Turing Machines Turing Makineleri.
Formel Diller ve Soyut Makineler
METHODLAR VE KOŞULLAR.
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İ
Sentaks ve Semantiği tanımlama
Excel’de VBA Programlama (Visual Basic Application)
Sözcük ve Sentaks Çözümlemesi ( Analizi)
Fonksiyonel Programlama Dilleri
YAPISAL PROGRAMLAMA Hafta-6
ARDUİNO Arduino Eğitimleri Bölüm 3 Programlama Dili Temelleri
Bölüm 7 İfadeler ve atamalar.
BLM-111 PROGRAMLAMA DİLLERİ I Ders-2 Değişken Kavramı ve Temel Operatörler Yrd. Doç. Dr. Ümit ATİLA
Bilgisayar Bilimi Problem Çözme Süreci-2.
Altprogramların gerçeklenmesi
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Belirsiz Sonlu Özdevinirler
NİŞANTAŞI ÜNİVERSİTESİ
OBG’nin ABÖ’ye Dönüştürülmesi ABÖ’nün OBG’ye Dönüştürülmesi
NİŞANTAŞI ÜNİVERSİTESİ
Ortam-Bağımsız Gramerler (OBG)
Sunum transkripti:

Sentaks ve semantik tarifi Bölüm 3 Sentaks ve semantik tarifi

Bölüm 3 Konuları Giriş Genel olarak sentaks tarifi Sentaks tarifinin matematiksel yöntemleri Özellik gramerleri (Attribute Grammars) Programların anlamını tarif etme: Dinamik Semantik Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Giriş Sentaks: program ünitelerinin ve ifadelerinin şekli/yapısı Semantik: program ünitelerinin ve ifadelerinin anlamı Bir dilin tanımı sentaks ve semantiği ile yapılır Dil tanımını kullananlar: Diğer dil tasarımcıları Dil implementasyonu yapanlar (derleyici-tercüman yazanlar) Programcılar (dilin kullanıcıları) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Sentaks tarifi: terimler Cümle: bir alfabeden gelen karakterler dizisi Dil: Cümleler kümesi Sözcük (lexeme): dilin en alt seviyeli parçalara ayrılamayan ünitesi (örnek: *, sum, begin, if, while, =) Jeton (token): sözcükler kategorisi (örnek: değişken, if, sayı) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Dillerin matematiksel tanımı Tanıyıcılar Tanıyıcı alfabeden oluşturulan dizileri okur ve dile ait olup olmadığına karar verir. Örnek: derleyicinin sentaks analiz kısmı Üreticiler Dile ait cümleleri sistematik olarak üretebilen “cihazlar” Örnek “gramerler” Tanıyıcıdan üretici (veya tersi) elde etmek mümkündür. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

BNŞ ve Ortam-Bağımsız gramerler 1950 ortalarında Noam Chomsky tarafından geliştirildi Dil üreticisi; amacı doğal dillerin sentaksını tarif etmek Ortam-bağımsız diller sınıfını tanımlar Backus-Naur Şekli (BNŞ) (Backus-Naur Form) (1959) John Backus tarafından Algol 58 dilini tarif etmek için tasarlandı Ortam-bağımsız gramere eşdeğer Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

BNŞ Temelleri Nonterminal semboller – sentaks yapı sınıflarını gösteren değişkenler Terminaller – jetonlar (‘=’ ‘{’ gibi tek karakterler de jeton sayılıyor) Kuralların solunda bir nonterminal, sağında ise terminal ve/veya nonterminallerden oluşan bir dizi olur. Nonterminaller çoğunlukla köşeli parantez içinde yazılırlar Örnek BNŞ kuralları: <ident_list> → identifier | identifier, <ident_list> <if_stmt> → if <logic_expr> then <stmt> Gramer: sonlu, boş olmayan kurallar kümesi Başlangıç sembolü: nonterminallerin özel bir üyesi. Türeme her zaman başlangıç sembolü ile başlar. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

BNŞ Kuralları Bir nonterminali tanımlayan kuralın birden çok sağ tarafı olabilir. <stmt>  <single_stmt> | begin <stmt_list> end Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Liste tarifi Listeler özyineleme ile gösterilir <ident_list>  ident | ident, <ident_list> Türeme başlangıç sembolünden başlayarak her seferınde bir kural uygulanarak cümle (terminallerden oluşan dizi) elde edilmesidir. Kural uygulanması bir nonterminalin onu tanımlayan kuralın sağ tarafı ile değiştirilmesi ile yapılır. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Örnek Gramer <program>  <stmts> <stmts>  <stmt> | <stmt> ; <stmts> <stmt>  <var> = <expr> <var>  a | b | c | d <expr>  <term> + <term> | <term> - <term> <term>  <var> | const Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Örnek Türeme <program> => <stmts> => <stmt> => <var> = <expr> => a = <expr> => a = <term> + <term> => a = <var> + <term> => a = b + <term> => a = b + const Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Türemeler Bir türemedeki her dizi bir cümlesel şekil dir (sentential form) Cümle sadece terminallerden oluşan bir cümlesel şekildir. Soldan (sağdan) türeme türemenin her adımında cümlesel şekildeki en soldaki (sağdaki) nonterminali seçmekle değiştirmekle olur. Ne soldan, ne de sağdan olan türemeler mümkündür. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Ayrıştırma ağacı (“gramer ağacı”) Türemenin hiyerarşik temsiliyeti <program> <stmts> <stmt> <var> = <expr> a <term> + <term> <var> const b Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Gramerlerde belirsizlik Bir gramer ayni cümle için iki tane farklı ağaç üretebiliyorsa, bu gramer belirsizdir. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Belirsiz bir ifade grameri <expr>  <expr> <op> <expr> | const <op>  / | - <expr> <expr> <expr> <op> <expr> <expr> <op> <op> <expr> <expr> <op> <expr> <expr> <op> <expr> const - const / const const - const / const Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Belirsiz olmayan bir ifade grameri <expr>  <expr> - <term> | <term> <term>  <term> / const| const <expr> <expr> - <term> <term> <term> / const const const Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Operatör birleşebilirliği (associativity) Sol özyineleme, sola birleşebilirlik Sağ özyineleme, sağa birleşebilirlik <expr> -> <expr> + <expr> | const (ambiguous) <expr> -> <expr> + const | const (unambiguous) <expr> <expr> <expr> + const <expr> + const const Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Genişletilmiş BNŞ (GBNŞ) Opsiyonel kısımlar köşeli parantez içine[ ] <proc_call> -> ident [(<expr_list>)] Sağ tarafın alternatif kısımları parantez içinde | ile ayrılır <term> → <term> (+|-) const Sıfır veya daha çok defa tekrar için {} kullanılır. <ident> → letter {letter|digit} Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

BNŞ ve GBNŞ BNF <expr>  <expr> + <term> GBNŞ <term>  <term> * <factor> | <term> / <factor> | <factor> GBNŞ <expr>  <term> {(+ | -) <term>} <term>  <factor> {(* | /) <factor>} Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Statik Semantik Anlamla ilgisi yok Ortam-bağımsız gramerler programlama dillerinin bütün yapılarını tarif edemezler veya tarif edilmeleri pratik değildir. Örnek sorunlu yapılar: - Ifadelerin tipleri - Değişkenlerin kullanım öncesi tanımlanmaları Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Özellik (attribute) gramerleri (ÖG) Özellik gramerlerinin ortam-bağımsız gramerlere göre ayrıştırma ağaçlarının düğümlerinde (nodes) fazladan bilgi saklama yetenekleri vardır. ÖG’lerin kullanım yerleri: Statik semantik belirlemesi Derleyiçi tasarımı (kod üretimi, statik semantik kontrolü) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Özellik Gramerleri: Tanım Özellik grameri, ortam bağımsız gramer G = (S, N, T, P) e aşağıdaki eklemelerle oluşur. Her gramer sembolü x için bir özellik kümesi A(x) vardır Her kuralda, bazı/tüm özelliklerin nasıl hesaplandıklarını gösteren fonksiyonlar vardır. Her kuralda özelliklerinin tutarlılığını kontrol eden sıfır veya daha çok yüklem (predicate) vardır. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Özellik Gramerleri: Tanım X0  X1 ... Xn bir kural olsun A(X0)’in herhangi bir elemanı  kendi değeri için sadece X1 ... Xn özelliklerinin değerlerine bağlı ise,  sentezlenmiş (synthesized) bir özelliktir. Aksi halde  miras kalmış (inherited) bir özelliktir. İlk başta, yapraklarda gerçek özellikler (hesaplanması gerekmeyen) ve değerleri bulunur. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Özellik Gramerleri : Örnek Sentaks <assign> -> id = <expr> <expr> -> <expr> + id <expr> -> id gerçek_tip: <expr> için sentezlenmiş beklenen_tip: <expr> için miras kalmış Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Özellik Gramerleri (devam) Sentaks kuralı: <assign> -> id = <expr> Semantik kurallar: <expr>.beklenen_tip  lookupType(id.index) Yüklem: <expr>. beklenen_tip == <expr>. gerçek_tip lookupType: sembol tablosundan bir değişkenin vs. tipini bakan fonksiyon Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Özellik Gramerleri (devam) Sentaks kuralı: <expr>  <expr> + id Semantik kurallar: <expr>1.gerçek_tip  <expr>2.gerçek_tip <expr>2.beklenen_tip  <expr>1.beklenen_tip Yüklemler: <expr>2.gerçek_tip == <expr>2.beklenen_tip <expr>2.gerçek_tip == lookupType(id.index) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Özellik Gramerleri (devam) Sentaks kuralı: <expr> -> id Semantik kurallar: <expr>.gerçek_tip  lookupType(id.index) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Özellik Gramerleri (devam) Özellik değerleri nasıl hesaplanır? Bütün özellikler miras kalmış ise, ağaç yukarıdan aşağı doğru “süslenebilir” Bütün özellikler sentezlenmiş ise, ağaç aşağıdan yukarı doğru “süslenebilir” Çoğu zaman her iki tür özellik olduğundan, ağacın hem yukarıdan aşağı, hem de aşağıdan yukarı “süslenmesi” gerekir. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Semantik Semantiği anlatmak için kabul gören tek bir yöntem yoktur. Üç ana yaklaşım Operasyonel semantik Aksiyomatik semantik Gösterimsel semantik Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Operasyonel Semantik Bir programın anlamı program ifadelerinin gerçek veya benzetimi yapılan bir makinenin üzerinde çalıştırılması ile elde edilir. Makinenin durumundaki değişiklik ifadelerin anlamını tanımlar. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Operasyonel Semantik (devam) Yöntem: İdeal özelliklerde bir bilgisayar tasarla Bu ideal bilgisayar için bir simülatör yaz Kaynak dilden ideal makine koduna bir derleyicinin kurallarını ver Bu kuralları gerçekleştiren derleyici yaz Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Operasyonel Semantik (devam) Değerlendirme: Çok detaya girmeden kullanılırsa iyi Matematiksel kullanım karmaşık olabilir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Aksiyomatik Semantik Matematiksel mantığa dayalı İlk amacı: matematiksel program doğruluğu Dildeki her ifade türü için bir aksiyom (çıkarım kuralı) var Aksiyomların parçası olan mantık ifadelerine iddia denir. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Aksiyomatik Semantik (devam) İfade öncesi bir iddia (öncekişart) değişkenler arasında o anda var olan ilişkileri belirtir İfade sonrası iddialara sonrakişart denir. En zayıf öncekişart en az sınırlaması olup da sonrakişartı garantileyen iddiadır. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Aksiyomatik semantik şekli {P} ifade {Q} Örnek a = b + 1 {a > 1} Olası bir öncekişart: {b > 10} En zayıf öncekişart : {b > 0} Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Program doğruluğunun ispatı Tüm programın sonrakişartı istenilen neticedir Sondan başlayıp geriye doğru gidin. Programın önşartına erişebilirseniz o zaman program doğrudur. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Aksiyomatik Semantik: Aksiyomlar Atama ifadeleri için aksiyom: {Qx->E} x = E {Q} Sonuç kuralı: Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Aksiyomatik Semantik: Aksiyomlar S1; S2 şeklinde sıralı ifadeler için çıkarım kuralı {P1} S1 {P2} {P2} S2 {P3} Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Aksiyomatik Semantik: Aksiyomlar Ön testli döngüler için çıkarım kuralı {P} while B do S end {Q} I döngü değişmezi dir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Aksiyomatik Semantik: Aksiyomlar Döngü değişmezinin özellikleri: I aşağıdaki şartları sağlamalı: P => I -- ilk başta doğru olmalı {I} B {I} -- Bnin çalışması I’yı değiştirmemeli {I and B} S {I} -- I dongü tarafından değiştirilmemeli (I and (not B)) => Q -- I doğru ise ve B yanlış ise Q doğru olmalı Döngü son bulur -- ispatı zor olabilir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Döngü değişmezi Döngü değişmezi hem bir önşarttır, hem de döngü sonrakişartının zayıflatılmış şeklidir Döngüye girmeden önce doğru olmak için yeterince zayıf olmalı, ama dongü bitiş şartı ile birleştiğinde sonrakişartın doğruluğunu garanti etmeli Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Aksiyomatik semantik değerlendirmesi Dilin her ifadesi için çıkarım kuralı üretmek zordur. Program doğruluğu ispatları ve programlar hakkında mantık neticelerine varmak için iyi bir araçtır Programlama dilinin anlamını vermede kullanıcıIara ve derleyici yazanlara çok yararlı değildir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Gösterimsel Semantik Özyinelemeli fonksiyon kuramına dayalı En soyut semantik anlatım yöntemi Scott ve Strachey tarafından geliştirildi (1970) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Gösterimsel Semantik (devam) Bir dil için göserimsel sematik tanımlama yöntemi: - Her dil varlığı için matematiksel bir nesne tanımla Dil varlıklarını matematiksel nesnelere eşleştiren bir fonksiyon tanımla. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Gösterimsel Semantik Değerlendirmesi Programların doğruluğunu ispat için kullanılabilir Programlar hakkında matematiksel kesinlikle düşünme yoludur Dil tasarımına yardımcı olabilir Derleyici üretim sistemlerinde kullanıldı Karmaşıklığından dolayı, dil kullanıcılarına faydası sınırlı Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Özet BNŞ ve ortab bağımsız gramerler birbiri ile eşdeğer Programlama dillerinin sentaksını tanımlamaya uygun Özellik gramerleri dilin sentaksını ve statik semantiğini anlatmaya uygun Dinamik semantik tanımı için üç ana yöntem: operasyonel, aksiyomatik ve gösterimsel Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ