Bölüm 3. Sözdizimi(Syntax) ve Anlamsal(Semantics) Tanımlama ISBN 0-321-49362-1



Benzer belgeler
Bölüm 3. Sentaks ve semantik tarifi ISBN

Semantik (Semantics): ifadelerin, deyimlerin, ve program birimlerinin anlamı Sentaks ve semantik bir dilin tanımı sağlar

OPERATÖRLER BÖLÜM Giriş Aritmetik Operatörler

Konular. Hafta 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

B02.8 Bölüm Değerlendirmeleri ve Özet

Temel Bilgisayar Programlama

KLASİK MANTIK (ARİSTO MANTIĞI)

Veri Toplama Yöntemleri. Prof.Dr.Besti Üstün

2008 YILI MERKEZİ YÖNETİM BÜTÇESİ ÖN DEĞERLENDİRME NOTU

Derleyici Kuramı (Compiler Theory)

C Operatörler. Öğr. Gör. M. Ozan AKI. Rev 1.0

Sentaks (Syntax): ifadelerin (statements), deyimlerin (expressions), ve program birimlerinin biçimi veya yapısı

Bölüm 3. Söz Dizilimi ve Anlamı Tanımlama ISBN

İçinde x, y, z gibi değişkenler geçen önermelere açık önerme denir.

BÖLÜM 7 BİLGİSAYAR UYGULAMALARI - 1

1. Mesaj Tipi ve Mesaj Fonksiyonu Bazında Bildirim Mail Adresi Tanımlama Đşlemleri

Topoloji değişik ağ teknolojilerinin yapısını ve çalışma şekillerini anlamada başlangıç noktasıdır.

Bilişim Sistemleri. Modelleme, Analiz ve Tasarım. Yrd. Doç. Dr. Alper GÖKSU

İçindekiler. 2. Zaman Verilerinin Belirlenmesi 47

BÖLÜM 3 FREKANS DAĞILIMLARI VE FREKANS TABLOLARININ HAZIRLANMASI

B05.11 Faaliyet Alanı

Olasılık ve İstatistik Dersinin Öğretiminde Deney ve Simülasyon

K12NET Eğitim Yönetim Sistemi

SÜREÇ YÖNETİMİ VE SÜREÇ İYİLEŞTİRME H.Ömer Gülseren > ogulseren@gmail.com

Genel bilgiler Windows gezgini Kes Kopyala Yapıştır komutları. 4 Bilinen Dosya Uzantıları

5. ÜNİTE KUMANDA DEVRE ŞEMALARI ÇİZİMİ

DİKKAT! SORU KİTAPÇIĞINIZIN TÜRÜNÜ "A" OLARAK CEVAP KÂĞIDINA İŞARETLEMEYİ UNUTMAYINIZ. SAYISAL BÖLÜM SAYISAL-2 TESTİ

CÜMLE BİRİMLERİ ANALİZİNDE YENİ EĞİLİMLER

Yandaki resimlerde Excel Pazartesi den başlayarak günleri otomatik olarak doldurmuştur.

Üç-fazlı 480 volt AC güç, normalde-açık "L1", "L2" ve "L3" olarak etiketlenmiş vida bağlantı uçları yoluyla kontaktörün tepesinde kontak hale gelir

ALPHA ALTIN RAPORU ÖZET 26 Ocak 2016

VEZNE PROGRAMINDA POSTA ÜCRETİ İLE İLGİLİ YAPILAN DÜZENLEMELER (Vezne Sürüm: )

DEĞERLENDİRME NOTU: Mehmet Buğra AHLATCI Mevlana Kalkınma Ajansı, Araştırma Etüt ve Planlama Birimi Uzmanı, Sosyolog

int printf (const char *format [, argument,...]);

TEKNİK RESİM. Ders Notları: Mehmet Çevik Dokuz Eylül Üniversitesi. Görünüşler - 1

ELLE SÜT SAĞIM FAALİYETİNİN KADINLARIN HAYATINDAKİ YERİ ARAŞTIRMA SONUÇLARI ANALİZ RAPORU

Sonlu Durumlu Makineler

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR SİSTEMLERİ LABORATUARI YÜZEY DOLDURMA TEKNİKLERİ

ALPHA ALTIN RAPORU ÖZET 10 Kasım 2015

MİKRO İKTİSAT ÇALIŞMA SORULARI-10 TAM REKABET PİYASASI

YAPAY ZEKA Problem Çözme ve Karar Verme Problem Çözme Süreci

25 Nisan 2016 (Saat 17:00 a kadar) Pazartesi de, postaya veya kargoya o gün verilmiş olan ya da online yapılan başvurular kabul edilecektir.

2.000 SOSYOLOG İLE YAPILAN ANKET SONUÇLARINA DAİR DEĞERLENDİRMEMİZ. Anayasa nın 49. Maddesi :

DERLEYİCİ TASARIMI ÖDEV-2 RAPORU

BÖL-1B. Fatih University- Faculty of Engineering- Electric and Electronic Dept.

KAVRAMLAR. Büyüme ve Gelişme. Büyüme. Büyüme ile Gelişme birbirlerinden farklı kavramlardır.

Fizik ve Ölçme. Fizik deneysel gözlemler ve nicel ölçümlere dayanır

01 OCAK 2015 ELEKTRİK AKIMI VE LAMBA PARLAKLIĞI SALİH MERT İLİ DENİZLİ ANADOLU LİSESİ 10/A 436

1. YAPISAL KIRILMA TESTLERİ

OYUN GELİŞTİRME AŞAMALARI-I. Oyununuzun senaryosunu kısaca tanıtınız/ amacınıda belirtiniz:

: 3218 Sayılı Serbest Bölgeler Kanunu Genel Tebliği (Seri No: 1) nde Değişiklik Yapılmasına Dair Tebliğ (Seri No: 3) yayımlandı.

İŞLETMENİN TANIMI

C/C++ DERS KONULARI. Kaynaklar 1. C Programlama dili, Kemal Yarcı 2. C/C++, Gürcan Banger 3. C ve Siz, Fatih Ekici


Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS. Kesikli Matematiksel Yapılar BIL

Sürücü Gönder. Yönetici Kılavuzu

Farklı Televizyon Yayın Ortamlarında Aynı Anda Farklı Reklam Yayını Bir Koltuğa İki Karpuz Sığar mı?

En İyi Uygulamalar ve Kullanım Kılavuzu

Oyun Teorisi IENG 456 Karar Vermede Analitik Yaklaşımlar

Üç Temel Kavram: Diller, Dilbilgisi ve Otomatlar Alfabe ve Dizgiler Tanım Örnek Tanım Tanım Tanım Tanım Örnek Diller

AĞ ÜZERİNDEN YAZICI ve TARAYICI TANIMLAMA KLAVUZU

ÜNİTE 5 KESİKLİ RASSAL DEĞİŞKENLER VE OLASILIK DAĞILIMLARI

BÖLÜM 1 YAZILIM TASARIMINA GİRİŞ YZM211 YAZILIM TASARIMI. Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi

İŞLEM BASAMAKLARI, KARŞILAŞILABİLECEK HATALAR ve ÇÖZÜM YOLLARI

DERS SOSYOLOJİ KONU SOSYOLOJİNİN ARAŞTIRMA YÖNTEM VE TEKNİKLERİ

KİMLİK DOĞRULAMA AUTHENTİCATİON

Yorka Yazılım Dokuma Otomasyonu Projesi. KONU : Dokuma Üretim Takibi ve Otomasyonu

Digifresh Kullanım Kılavuzu

ELITE A.G. KS100/HEFM SICAK-SOĞUK ETĐKET BOY KESME VE ĐŞARETLEME MAKĐNASI KULLANIM KILAVUZU

MEVCUT OTOMATĐK KONTROL SĐSTEMLERĐNĐN BĐNA OTOMASYON SĐSTEMĐ ĐLE REVĐZYONU VE ENERJĐ TASARRUFU

Senato Tarihi: Karar No: ORDU ÜNİVERSİTESİ SÜREKLİ EĞİTİM UYGULAMA VE ARAŞTIRMA MERKEZİ EĞİTİM VE SERTİFİKA PROGRAMLARI YÖNERGESİ

CSD-OS İşletim Sistemi Projesi - Fonksiyon Açıklama Standardı

BİT ini Kullanarak Bilgiye Ulaşma ve Biçimlendirme (web tarayıcıları, eklentiler, arama motorları, ansiklopediler, çevrimiçi kütüphaneler ve sanal

MAK 4026 SES ve GÜRÜLTÜ KONTROLÜ. 6. Hafta Oda Akustiği

MODEL KURMA HATALARI ve VERİ SORUNLARI

Akademik Personel ve Lisansüstü Eğitimi Giriş Sınavı. ALES / Đlkbahar / Sayısal II / 22 Nisan Matematik Soruları ve Çözümleri

Bilgisayarla Tasarım I (GRT 207) Ders Detayları

JET MOTORLARININ YARI-DĐNAMĐK BENZETĐŞĐMĐ ve UÇUŞ ŞARTLARINA UYGULANMASI

KİTAP İNCELEMESİ. Matematiksel Kavram Yanılgıları ve Çözüm Önerileri. Tamer KUTLUCA 1. Editörler. Mehmet Fatih ÖZMANTAR Erhan BİNGÖLBALİ Hatice AKKOÇ

ANALOG LABORATUARI İÇİN BAZI GEREKLİ BİLGİLER

Endüstri Mühendisliğine Giriş. Jane M. Fraser. Bölüm 2. Sık sık duyacağınız büyük fikirler

EĞİTİM BİLİMİNE GİRİŞ 1. Ders- Eğitimin Temel Kavramları. Yrd. Doç. Dr. Melike YİĞİT KOYUNKAYA

KORELASYON VE REGRESYON ANALİZİ

DENEY 2: PROTOBOARD TANITIMI VE DEVRE KURMA

Fizik I (Fizik ve Ölçme) - Ders sorumlusu: Yrd.Doç.Dr.Hilmi Ku çu

BULUġ BĠLDĠRĠM FORMU/ GIDA

Ek 1. Fen Maddelerini Anlama Testi (FEMAT) Sevgili öğrenciler,

Giresun Üniversitesi Akademik Değerlendirme Ve Kalite Geliştirme Uygulama Yönergesi

MODÜL BİLGİ SAYFASI İÇERİK

dersinin paketlenmesi

İNTEGRAL MENKUL DEĞERLER A.Ş. BİLGİLENDİRME POLİTİKASI

ELEZ101 Ölçme Tekniği Sunu No: 01. Öğr. Gör. Dr. Barış ERKUŞ

Konu 4 Tüketici Davranışları Teorisi

0 dan matematik. Bora Arslantürk. çalışma kitabı

İşletme Gelişimi Atölye Soruları

Kaynaştırma Uygulamaları Yrd. Doç. Dr. Emre ÜNLÜ.

VERGİ DENETMENİ TANIM

MUHASEBE VE DENETİM YÜKSEK LİSANS PROGRAMI (TEZSİZ)

İşletim Sisteminin Katmanları

Transkript:

Bölüm 3 Sözdizimi(Syntax) ve Anlamsal(Semantics) Tanımlama ISBN 0-321-49362-1

Bölüm 3 Konuları Giriş Sözdizim(Syntax) tanımlamanın genel problemi Sözdizim(Syntax) tanımlamada resmi metotlar Özellik Gramerleri Programların anlamlarını tanımlama: Dinamik Anlamlar(Dynamic Semantics) Wesley. All rights reserved. 1-2

Giriş Sözdizimi(Syntax): Deyimlerin, ifadelerin ve program birimlerinin biçimi ya da yapısı Anlamsal(Semantics): Deyimlerin, ifadelerin ve program birimlerinin anlamı Sözdizimi(Syntax) ve anlamsallar(semantics) bir dilin tanımını sağlarlar Bir dil tanımının kullanıcıları Diğer dil tasarımcıları Gerçekleştiriciler Programcılar (dilin kullanıcıları) Wesley. All rights reserved. 1-3

Sözdizim(Syntax) tanımlamanın genel problemi: Terminoloji(Terminology) Bir cümle(sentence) bir karakter dizisidir. Kullanılan karakterler bir alfabeden alınır. Bir dil(language) cümleler(sentences) kümesidir. Bir lexeme dilin en düşük seviyeli sözdizimsel birimidir(örn., *, sum, begin) Bir simge(token) lexeme ların kategorisidir(örn., tanıtıcı(identifier)) Wesley. All rights reserved. 1-4

Dillerin resmi tanımı Dil Tanıyıcıları(Recognizers) Bir tanıyıcı aygıt dilden bir karakter dizisi okur ve bu karakter dizisinin bu dile ait olup olmadığına karar verir. Örnek: bir derleyicinin söz dizimanalizcisi Bölüm 4 de ayrıntılandırılacaktır. Dil Üreticileri(Generators) Bir dile ait cümle üreten aygıtlart Belirli bir cümlenin söz diziminin doğru olup olamdığı o dili üreten üretici incelenerek tespit edilebilir. Wesley. All rights reserved. 1-5

Söz Diziminin Tanımında Kullanılan Resmi Metotlar Backus-Naur Form and Serbest- İçerik Gramerleri(Context-Free Grammars) Programlama dillerinin söz dizimlerini tanımlamada kullanılan en yaygın metottur. Genişletilmiş BNF(Extended BNF) BNF nin okunabilirliğini ve yazılabilirliğini arttırır. Gramerler ve Dil Tanıyıcıları Wesley. All rights reserved. 1-6

BNF ve Serbest-İçerik Gramlerleri(Context- Free Grammars) Serbest İçerik Gramerleri Noam Chomsky tarafından 1950 lerin ortasında geliştirildir Dil üreticileri doğal dillerin söz dizimlerini tanımlama anlamına gelir Serbest-İçerik dilleri adlanılan bir diller sınıfını tanımlar. Wesley. All rights reserved. 1-7

Backus-Naur Form (BNF) Backus-Naur Form (1959) John Backus tarafından Algol 58 i tanımlamak için keşfedildi. BNF serbest içerik gramerlerinin(context-free grammars) eşleniğidir. BNF bir metalanguage dir be başka bir dil anımlar BNF de, soyutlamalar söz dizimsel yapıların sınıflarını temsil etmek için kullanılır. Söz disimsel değişkenler gibi davranırlar (sonolmayan semboller:nonterminal symbols adlanırlar.) Wesley. All rights reserved. 1-8

BNF Temelleri Son Olmayan semboller(non-terminals): BNF soyutlamaları(abstractions) Son semboller(terminals): lexeme lar ve token lar Gramer: bir kurallar koleksiyonudur. Örnek BNF kuralları: <ident_list> identifier identifier, <ident_list> <if_stmt> if <logic_expr> then <stmt> Wesley. All rights reserved. 1-9

BNF Kurallar Bir kuralda sol taraf(lhs-left hand side) ve sağ taraf(rhs-right hand side) vardır ve son olan(terminal) ve son olmayan (nonterminal) sembollerden oluşur. Bir gramer sonlu boş olmayan kurallar kümesidir. Bir soyutlamanın(abstraction) (ve ya son olmayan sembol) birden fazla sağ tarafı olabilir. <stmt> <single_stmt> begin <stmt_list> end Wesley. All rights reserved. 1-10

Tanımlama Listeleri Söz dizimsel listeler yineleme(recursion) kullanılarak tanımlanır. <ident_list> ident ident, <ident_list> Bir türetme(derivation) kuralların tekrarlı bir şekilde uygulanmasıdır.bir başlangıç sembolünden başlanır ve tüm elemanları son olan sembol(terminal)den oluşan bir cümle de biter. Wesley. All rights reserved. 1-11

Bir örnek gramer <program> <stmts> <stmts> <stmt> <stmt> ; <stmts> <stmt> <var> = <expr> <var> a b c d <expr> <term> + <term> <term> - <term> <term> <var> const Wesley. All rights reserved. 1-12

Bir örnek türetme <program> => <stmts> => <stmt> => <var> = <expr> => a =<expr> => a = <term> + <term> => a = <var> + <term> => a = b + <term> => a = b + const Wesley. All rights reserved. 1-13

Türetme Türetmelerde sembollerin her dizisi bir cümlesel biçimdedir. Bir cümle sadece son olan sembollerden oluşan bir cümlesel biçimdir(sentential form). En sol türetme(leftmost derivation) her cümlesel biçimde en soldaki son olamayan terimin açıldığı türetmedir. Bir türetme en sol ya da en sağ(right most) olabilir. Wesley. All rights reserved. 1-14

Ayrıştırma Ağacı(Parse Tree) Bir türetmenin hiyerarşik temsilidir. <program> <stmts> <stmt> <var> = <expr> a <term>+ <term> <var> const Wesley. All rights reserved. 1-15 b

Gramerlerin belirsizliği(ambiguity) Bir gramerdeki bir cümlesel biçim iki veya daha fazla ayrıştırma ağacı(parse tree) oluşturuyorsa bu gramer belirsiz(ambiguous) adlanır. Wesley. All rights reserved. 1-16

Bir belirsiz deyim(expression) grameri <expr> <expr> <op> <expr> const <op> / - <expr> <expr> <expr> <op> <expr> <expr> <op> <expr> <expr> <op> <expr> <expr> <op> <expr> const - const / const const - const / const Wesley. All rights reserved. 1-17

Bir belirsiz deyim(expression) grameri Eğer ayrıştırma ağacında işleçlerin(operators) öncelik seviyeleri gösterilirse belirsizlik olmaz. <expr> <expr> - <term> <term> <term> <term> / const const <expr> <expr> - <term> <term> <term> / const const const Wesley. All rights reserved. 1-18

İşleçlerin Birleşikliği(Associativity of Operators) İşleç birleşikliğide bir gramerde gösterilebilir. <expr> -> <expr> + <expr> const (ambiguous) <expr> -> <expr> + const const (unambiguous) <expr> <expr> + const <expr> + const Copyright 2007 const Addison- Wesley. All rights reserved. 1-19

Genişletilmiş BNF(Extended BNF) Seçimli olan parçalar [ ] içinde tanımlanır. <proc_call> -> ident [(<expr_list>)] Sağ tarafın(rhs) alernatif seçenekli kısımları parantez içinde dikey çubuklar ile ayrılarak gösterilir. <term> <term> (+ -) const (0 ya da daha fazla) tekrarlamalar { } içinde yazılır. <ident> letter {letter digit} Wesley. All rights reserved. 1-20

BNF and EBNF BNF <expr> <expr> + <term> <expr> - <term> <term> <term> <term> * <factor> <term> / <factor> <factor> EBNF <expr> <term> {(+ -) <term>} <term> <factor> {(* /) <factor>} Wesley. All rights reserved. 1-21

Özellik Gramerleri(Attribute Grammars) Serbest içerik gramerleri programlama dillerinin tüm söz dizimini tanımlamazlar Serbest içerikli gramerlere ayrıştırma ağaçları ile birlikte bazı anlamsal bilgiler içeren eklentiler katılır. Özellik gramerlerinin birinci değeri Statik anlamsal belirtimler(static semantics specification) Derleyici tasarımı (static semantics checking) Wesley. All rights reserved. 1-22

Özellik Gramerleri : Tanımlama(Definition) Bir özellik grameri aşağıdaki eklentilere sahip bir serbest içerik G = (S, N, T, P) grameridir. Her x gramer kuralı için bir A(x) özellik değerleri kümesi vardır. Her kural fonksiyonlar kümesine sahiptir. Bu fonksiyonlar kuraldaki son olmayan semboller için belirli özellikler tanımlar Her kural (boş olabilir) özelliklerin tutarlılığını kontrol eden yüklemseller(predicates) kümesine sahiptir. Wesley. All rights reserved. 1-23

Özellik Gramerleri : Tanımlama(Definition) X 0 X 1... X n bir kural olsun S(X 0 ) = f(a(x 1 ),..., A(X n )) biçimindeki fonsiyonlar sentezlenmiş özellikleri (synthesized attributes) tanımlar. I(X j ) = f(a(x 0 ),..., A(X n )), for i <= j <= n, biçimindeki fonksiyonlar kalıtılmış özellikleri(inherited attributes) tanımlar. Başlangıçta, yapraklarda içsel özellikler (intrinsic attributes) bulunur. Wesley. All rights reserved. 1-24

Özellik Gramerleri: Bir örnek Sözdizimi(Syntax) <assign> -> <var> = <expr> <expr> -> <var> + <var> <var> <var> A B C actual_type: <var> ve <expr> için sentezlenir expected_type: <expr> için kalıtılır. Wesley. All rights reserved. 1-25

Özellik Gramerleri (devam) Sözdizim kuralı(syntax rule): <expr> <var>[1] + <var>[2] Anlamsal Kurallar(Semantic rules): <expr>.actual_type <var>[1].actual_type Yüklemsel(Predicate): <var>[1].actual_type == <var>[2].actual_type <expr>.expected_type == <expr>.actual_type Sözdizim kuralı(syntax rule): <var> id Anlamsal Kural(Semantic rule): <var>.actual_type lookup (<var>.string) Wesley. All rights reserved. 1-26

Özellik Gramerleri (devam) Özellik değerleri nasıl hesaplanır? Eğer tüm özellikler kalıtılmışsa, ağaç yukarıdan aşağıya sırada(top-down order) dekore edilebilmelidir. Eğer tüm özellikler sentezlenmişse, ağaç aşağıdan yukarıya sırada(bottom-up order) dekore edilebilmelidir. Birçok durumda, her iki çeşit özellik de kullanılır, ve yukarıdan aşağıya ; aşağıdan yukarıya dekorasyon kullanılır. Wesley. All rights reserved. 1-27

Özellik Gramerleri (devam) <expr>.expected_type inherited from parent <var>[1].actual_type lookup (A) <var>[2].actual_type lookup (B) <var>[1].actual_type =? <var>[2].actual_type <expr>.actual_type <var>[1].actual_type <expr>.actual_type =? <expr>.expected_type Wesley. All rights reserved. 1-28

Anlamsallar(Semantics) Anlamsalları tanımlamakiçin geçiş çapta kabul edilen tek bir notasyon yoktur. İşlemsel Anlamlar(Operational Semantics) Bir programın ifadelerini bir makinede çalıştırarak anlamlarını tanımlar; ya simüle eder ya da gerçekten çaıştırır. Makinenin durumundaki(bellek-memory, yazmaçlarregisters) değişiklik ifadenin anlamını tanımlar. Wesley. All rights reserved. 1-29

İşlemsel Anlamlar(Operational Semantics) Bir yüksek seviye dil için işlemsel anlamarı kullanmak için bir sanal makineye ihtiyaç vardır. Bir donanımsal saf yorumlayacı çok pahalı olacaktır. Bir yazılımsal saf yorumlayıcının da bazı problemleri vardır Belirli bilgisayarın detaylı karakteristikleri eylemleri anlamayı zorlaştıracaktır. Bu tip bir anlamsal tanımlama makine-bağımlı olacaktır. Wesley. All rights reserved. 1-30

İşlemsel Anlamlar(Operational Semantics) Daha iyi bir alternatif: Tam bir bilgisayar simulasyonu süreç: Bir dönüştürücü oluştur( kaynak kodu idealleştirilmiş bilgisayar için makine koduna dönüştür) İdealleştirilmiş bilgisayar için bir simulatör oluştur. İşlemsel anlamların değerlendirilmesi: Resmi olmayan şekilde kullanılacaksa iyidir(dil ek kitabı gibi) Resmi kullanılırsa oldukça karmaşık(örn., VDL), PL/I nın anlamsallarını tanımlamak içişn kullanılmıştır. Wesley. All rights reserved. 1-31

Aksiyomatik Anlamlar(Axiomatic Semantics) biçimsel mantık temellidir. Orijinal amaç: biçimsel program doğrulama Aksiyonlar veya girişim(inference) kuralları dildeki her ifade için tanımlanır(bu deyimlerden başka deyimlere dönüştürmeye izin verir) Deyimler iddialar(assertions) olarak adlandırılır. Wesley. All rights reserved. 1-32

Aksiyomatik Anlamlar(Axiomatic Semantics) Bir ifadeden önceki iddia (a precondition) değişkenler arasındaki ilişkileri ve kısıtları tanımlar Bir ifadeden sonraki iddia postcondition dır. En zayıf ön koşul (weakest precondition) en az kısıtlayıcı önkoşuldur ve bu koşul post condition ı garanti eder. Wesley. All rights reserved. 1-33

Aksiyomsal Anlamsal Biçimler(Axiomatic Semantics Form) Pre-, post form: {P} statement {Q} Bir örnek a = b + 1 {a > 1} Bir mümkün önkoşul(precondition): {b > 10} En zayıf önkoşul: {b > 0} Wesley. All rights reserved. 1-34

Program kanıt süreci(program Proof Process) Tüm program için önkoşul istenilen sonuçtur. Programın ilk ifadesine doğru geriye doğru çalışılır. Eğer ilk ifadenin önündeki ön koşul program belirtimi ile aynıysa, program doğrudur. Wesley. All rights reserved. 1-35

Aksiyomsal Anlamsal: Aksiyomlar(Axioms) Atama ifadeleri için bir aksiyom (x = E): {Q x->e } x = E {Q} Sonuç Kuralı(The Rule of Consequence): {P} S{Q}, P' P, Q {P'}S{Q'} Q' Wesley. All rights reserved. 1-36

Aksiyomsal Anlamsal: Aksiyomlar(Axioms) Arka arka gelen ifadeler için girişim kuralı(interference rule) {P1} S1 {P2} {P2} S2 {P3} {P1} S1{P2},{P2} S2{P3} {P1}S1; S2{P3} Wesley. All rights reserved. 1-37

Aksiyomsal Anlamsal: Aksiyomlar(Axioms) Amntıksal öndenetimli döngü için bir girişim kuralı {P} while B do S end {Q} (I and B) S{I} {I} while B do S{I and (not B)} burada I döngü değişmezidir(loop invariant) (tümevarım hipotezi) Wesley. All rights reserved. 1-38

Aksiyomsal Anlamsal: Aksiyomlar(Axioms) Döngü değişkeninin karakteristikleri: I aşağıdaki koşulları sağlamalıdır: P => I -- ilk başta döngü değişmezi doğru olmalıdır. {I} B {I} -- Mantıksalın hesaplanması I yı değiştirmemelidir. {I and B} S {I} -- I döngü gövdesinin çalıştırılmasıyla değiştirilmez (I and (not B)) => Q -- Eğer I doğruysa ve B yanlış ise, anlamındadır Döngüğ sonlanır. Wesley. All rights reserved. 1-39

Döngü Değişmezi(Loop Invariant) I döngü değişkeni döngü postcondition nın zayıflatılmış versiyonudur.ve ayrıca bir ön koşuldur. I döngü başlamadan öncede doğru olacak şekilde yeteri kadar zayıf olmalıdır, fakat döngü sonlanma şartı ile birleştirildiğinde post condition ı doğrulayacak kadar da kuvvetli olmalıdır. Wesley. All rights reserved. 1-40

Aksiyomsal Anlamsal ların hesaplanması Dildeki tüm ifadeler için aksiyonlar ve girişim kuralları tanımlamak zordur. Doğruluk kontrolü için iyi bir araçtır ve programlardan sonuç çıkarmada kullanılır.kafat dil kullanıcılarıo ve derleyici tasarımcıları için iyi değildir. Bir programlama dilinin anlamını anlamadaki kullanılışlığı dil kullanıcıları ve derleyici tasarımcıları için iyi değildir. Wesley. All rights reserved. 1-41

Gösterimsel Anlamsallar (Denotational Semantics) Özyinelemeli fonksiyon temellidir. En soyut anlamsal tanımlama metodudur. Scott and Strachey (1970) tarafından geliştirilmiştir. Wesley. All rights reserved. 1-42

Gösterimsel Anlamsallar Bir dil için gösterimsel anlamsalların üretilmesi sürecinde her dil varlığı için bir matematiksel nesne tanımlanır. Dilin varlıklarının uygun gelen matematiksel nesne örneklerine eşleyen bir fonksiyon tanımlanır. Dil yapılarının anlamı sadece program değişkenlerinin değerleri ile tanımlanır. Wesley. All rights reserved. 1-43

Gösterimsel Anlamsallar -İşlemsel Anlamsallarda İşlemsel anlamsallarda,durum değişiklikleri kodlarla tanımlanır Gösterimsel anlamsallarda, durum değişiklikleri katı matematiksel fonksiyonlar ile tanımlanır. Wesley. All rights reserved. 1-44

Gösterimsel Anlamsallar: Program Durumu Bir programın durumu mevcut durumdaki tüm değişkenlerinin değerleridir. s = {<i 1, v 1 >, <i 2, v 2 >,, <i n, v n >} VARMAP bir fonksiyon olsun, bir değişken ismi ve durum verildiğinde değişkenin mevcut durumdaki değerini versin. VARMAP(i j, s) = v j Wesley. All rights reserved. 1-45

Ondalık Sayılar <dec_num> 0 1 2 3 4 5 6 7 8 9 <dec_num> (0 1 2 3 4 5 6 7 8 9) M dec ('0') = 0, M dec ('1') = 1,, M dec ('9') = 9 M dec (<dec_num> '0') = 10 * M dec (<dec_num>) M dec (<dec_num> '1 ) = 10 * M dec (<dec_num>) + 1 M dec (<dec_num> '9') = 10 * M dec (<dec_num>) + 9 Wesley. All rights reserved. 1-46

Deyimler(Expressions) Deyimleri Z {error} üzerine eşler Deyimlerin ondalık sayılar, değişkenler, ya da ikili deyimler olduğunu varsayıyoruz. Wesley. All rights reserved. 1-47

3.5 Anlamsallar M e (<expr>, s) = case <expr> of <dec_num> => M dec (<dec_num>, s) <var> => if VARMAP(<var>, s) == undef then error else VARMAP(<var>, s) <binary_expr> => if (M e (<binary_expr>.<left_expr>, s) == undef OR M e (<binary_expr>.<right_expr>, s) = undef) then error else if (<binary_expr>.<operator> == + then M e (<binary_expr>.<left_expr>, s) + M e (<binary_expr>.<right_expr>, s) else M e (<binary_expr>.<left_expr>, s) * M e (<binary_expr>.<right_expr>, s) iki işlenene(operand) ve bir işleçe(operator) sahip deyim yazılmıştır. Wesley. All rights reserved. 1-48

Atama İfadeleri(Assignment Statements) Durum kümesini başka durum kümesine eşler Ma(x := E, s) = if Me(E, s) == error then error else s = {<i 1,v 1 >,<i 2,v 2 >,...,<i n,v n >}, where for j = 1, 2,..., n, v j = VARMAP(i j, s) if i j <> x = Me(E, s) if i j == x Wesley. All rights reserved. 1-49

Mantıksal Önkoşullu döngüler Durum kümesini durum kümesine eşler M l (while B do L, s) = if M b (B, s) == undef then error else if M b (B, s) == false then s else if M sl (L, s) == error then error else M l (while B do L, M sl (L, s)) Wesley. All rights reserved. 1-50

Döngü Anlamı(Loop Meaning) Döngünün anlamı; program değişkenlerinin, döngü içindeki ifadeler belirlenen sayıda işlendikten sonraki değerleridir. Öz olarak, döngü iterasyondan özyinelemeye dönüştürülür, burada özyinelemi kontrol başka bir özyinelemli durum eşleme fonksiyonu ile tanımlanır. özyineleme(recursion), iterasyona göre matematiksel olarak daha kolay tanımlanır. Wesley. All rights reserved. 1-51

Gösterimsel anlamsalların hesaplanması Programların doğruluk kanıtında kullanılabilir Programlar hakkında özenli düşünebilmemizi sağlar. Dil tasarımına yardımcı olabilir. Derleyici üretim sistemelrine yardımcı olabilir. Dil kullanıcıları tarafından, karmaşıklığı olduğu için, az kullanılır. Wesley. All rights reserved. 1-52

Özet BNF ve serbest içerik gramerleri(contextfree grammars) eş meta dillerdir. Programlama dillerinin söz dizimini tanımlamada kullanılırlar. Bir özellik grameri(attribute grammar) hem sözdizimi hemde anlamsal tanımlama yapabilir. Anlamsal tanımlamada üç temel yöntem vardır. İşlemsel(Operation),aksiyomatik( axiomatic), gösterimsel(denotational) Wesley. All rights reserved. 1-53