Sentaks ve Semantiği tanımlama

Slides:



Advertisements
Benzer bir sunumlar
Sentaks ve Semantiği tanımlama
Advertisements

Derleyici Teorisine Giriş
Sözcüksel Çözümleme/Analiz (Lexical Analysis)
ANLATIM TÜRLERİNİ SINIFLANDIRMA. Edebî türler veya metin türleri olarak bilinen yazılarda farklı anlatım birlikleri bir araya gelir. Bir hikâyede betimleme,
Sentaks (Sözdizim) ve Semantik (Anlam)
Bölüm 3: Sentaks ve Semantiği Tanımlama
Biçimsel Diller ve Soyut Makineler
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.
Bağlam Arayüz Görev Kullanıcı Kullanılabilirliğin Ana Bileşenleri.
Hazırlayan: Dr. Emine CABI
Öğretim Teknolojileri ve Materyal Geliştirme
TC Windows Editörü DevC++. KURULUM PROGRAMIN KURULACAĞI YER BURADA BELİRLENİYOR.
ÖLÇME DEĞERLENDİRME VE SINAV HİZMETLERİ GENEL MÜDÜRLÜĞÜ.
Program Tasarım Modelleri
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.
Hata Fonksiyonları Lojistik Fonksiyon ß ß Huber Fonksiyonu ß ß.
BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ Dil Çevrimi (Hafta4) 1.
Öğretim İlke ve Yöntemleri: Öğrenme Stratejileri
Leyla İÇERLİ Araş. Gör. Dr. Aksaray Üniversitesi İİBF İşletme Bölümü.
GELİŞİMLE İLGİLİ ARAŞTIRMA YÖNTEM VE TEKNİKLERİ
ÜSTÜN ZEKALI VE ÜSTÜN YETENEKLİ ÇOCUKLAR
BDÖde Kullanılan Yaygın Formatlar
Fonksiyonel Programlama
TABLO ve GRAFİK YAPIM YÖNTEMİ
PROGRAMLI ÖĞRETİM Tanımı:
Sıklık Dağılımları Yrd. Doç. Dr. Emine Cabı.
DENEYSEL TERTİPLER VE PAZAR DENEMESİ
Yapay Sinir Ağı Modeli (öğretmenli öğrenme) Çok Katmanlı Algılayıcı
DOĞAL SAYILAR TAM SAYILAR
BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ
MAT – 101 Temel Matematik Mustafa Sezer PEHLİVAN *
YÖNETİM- ÖRGÜT TEORİLERİ MODERN EKOL- SİSTEM TEORİSİ
Madde 2: Tanımlar Bu Sözleşmenin amaçları bağlamında,
TEMEL GEOMETRİK KAVRAMLAR VE ÇİZİMLER
Klavye Kullanımı.
Tez Veri Girişi Ulusal Tez Merkezine, Tez Döneminde olan ve Danışmanı ile Tez konusunu belirleyip, Enstitümüzün onayından geçen tüm öğrenciler giriş yapmak.
Bölüm 6: Araştırma Evreni ve Örnekleme
KÜMELER HAZIRLAYAN : SELİM ACAR
3.hafta METODLAR.
Sentaks ve semantik tarifi
Bölüm 7 İfadeler ve atamalar.
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
TEKNOLOJİ VE TASARIM DERSİ 7.D.1. Özgün Ürünümü Tasarlıyorum.
NİŞANTAŞI ÜNİVERSİTESİ
Evren-Örneklem, Örnekleme Yöntemleri 2
Fortran Proglama Dili’nin Esasları
Bilgisayar Bilimi Koşullu Durumlar.
Ayrıştırma Ağaçları Tanımlar Soldan ve Sağdan Türemeler ile İlişkisi
Yrd. Doç. Dr. Ömer Kutlu BAŞARI TESTLERİNİN GELİŞTİRİLMESİ
Sonlu Özdevinirlere Giriş
NİŞANTAŞI ÜNİVERSİTESİ
6. DÖNGÜ (TEKRARLAMA) DEYİMLERİ
Bilgisayar Bilimi Fonksiyon Yazma.
Değerler ve Değişkenler
NİŞANTAŞI ÜNİVERSİTESİ
Ders 2: Yazılım Geliştirme
Evren-Örneklem, Örnekleme Yöntemleri 1
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Veri ve Türleri Araştırma amacına uygun gözlenen ve kaydedilen değişken ya da değişkenlere veri denir. Olgusal Veriler Yargısal Veriler.
NİŞANTAŞI ÜNİVERSİTESİ
Derse giriş için tıklayın...
Gümüşhane Üniversitesi Mühendislik ve Doğa Bilimleri Fakültesi Genetik ve Biyomühendislik Bölümü Bitirme Çalışması Poster Hazırlama Kılavuzu Poster Boyutları:
Sınıf Öğretmenlerinin Eğitsel Amaçlı İnternet Kullanım Öz Yeterlikleri
Bilimsel Araştırma Yöntemleri
Ortam-Bağımsız Gramerler (OBG)
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

Sentaks ve Semantiği tanımlama Bölüm 3 Sentaks ve Semantiği tanımlama

Bölüm 3 Konuları Giriş Genel Sentaks tanımlama problemi Sentaks tanımlamanın biçimsel metotları Özellik(Attribute) Gramerleri

3.1 Giriş Sentaks(Syntax): ifadelerin(statements), deyimlerin(expressions), ve program birimlerinin biçimi veya yapısı Semantik(Semantics): deyimlerin, ifadelerin, ve program birimlerinin anlamı Sentaks ve semantik bir dilin tanımı sağlar Bir dil tanımının kullanıcıları Diğer dil tasarımcıları Uygulamacılar(Implementers) Programcılar (dilin kullanıcıları)

3.2 Genel Sentaks tanımlama problemi : Terminoloji Bir cümle(sentence) herhangi bir alfabede karakterlerden oluşan bir stringdir Bir dil (language) cümlelerden oluşan bir kümedir Bir lexeme bir dilin en alt seviyedeki sentaktik(syntactic) birimidir (örn., *, sum, begin) Bir simge (token) lexemelerin bir kategorisidir (örn., tanıtıcı(identifier))

Dillerin formal tanımları Tanıyıcılar(Recognizers) Bir tanıma aygıtı bir dilin girdi strringlerini okur ve girdi stringinin dile ait olup olmadığına karar verir Örnek: bir derleyicinin sentaks analizi kısmı Bölüm 4’te daha detaylı anlatılacak Üreteçler(Generators) Bir dilin cümlelerini(sentences) üreten aygıttır Belli bir cümlenin(sentence) sentaksının doğru olup olmadığı, üretecin(generator) yapısıyla karşılaştırılarak anlaşılabilir

3.3 Sentaks tanımlamanın biçimsel metotları Backus-Naur Form ve Bağlam-Duyarsız (Context-Free) Gramerler Programlama dili sentaksını tanımlamayan en çok bilinen metottur. (Genisletimis)Extended BNF BNF’un okunabilirliği ve yazılabilirliğini arttırır Gramerler (grammars) ve tanıyıcılar (recognizers)

BNF ve Bağlam-Duyarsız (Context-Free) Gramerler Noam Chomsky tarafından 1950lerin ortalarında geliştirildi Dil üreteçleri(generators), doğal dillerin sentaksını tanımlamak için amacındaydı Bağlam-Duyarsız(Context-Free) diller adı verilen bir diller sınıfı tanımlandı

Backus-Naur Form (BNF) John Backus tarafından Algol 58’i belirlemek için icat edildi BNF bağlam-duyarsız (context-free) gramerlerin eşdeğeridir BNF başka bir dili tanımlamak için kullanılan bir metadildir(metalanguage) BNF’de, soyutlamalar(abstractions) sentaktik(syntactic) yapı sınıflarını temsil etmek için kullanılır--sentaktik değişkenler gibi davranırlar (nonterminal semboller adı da verilir)

BNF’un Temelleri Non-terminaller(uçbirim olmayanlar): BNF soyutlamaları Terminaller(uçbirimler): lexemeler ve simgeler(tokens) Gramer: kurallar(rules) koleksiyonu BNF kurallarından(rules) örnekler: <ident_list> → identifier | identifer, <ident_list> <if_stmt> → if <logic_expr> then <stmt>

BNF Kuralları(Rules) Bir kuralın bir sol-tarafı (left-hand side (LHS)) ve bir sağ tarafı (right-hand side (RHS)) vardır, ve terminal ve nonterminal sembollerden oluşur Bir gramer, kuralların(rules) boş olmayan sonlu bir kümesidir Bir soyutlama (abstraction)(veya nonterminal sembol) birden fazla RHS’ye sahip olabilir <stmt>  <single_stmt> | begin <stmt_list> end

Listeleri(Lists) Tanımlama Sentaktik listeler özyineleme(recursion) kullanılarak tanımlanır <ident_list>  ident | ident, <ident_list> Bir türev(derivation), başlangıç sembolüyle başlayan ve bir cümleyle(sentence)(tüm terminal sembolleri)biten kuralların(rules) tekrarlamalı bir uygulamasıdır.

Bir Gramer Örneği <program>  <stmts> <stmts>  <stmt> | <stmt> ; <stmts> <stmt>  <var> = <expr> <var>  a | b | c | d <expr>  <term> + <term> | <term> - <term> <term>  <var> | const

Bir türev(derivation) örneği <program> => <stmts> => <stmt> => <var> = <expr> => a =<expr> => a = <term> + <term> => a = <var> + <term> => a = b + <term> => a = b + const

Türev(Derivation) Bir türevde yar alan bütün sembol stringleri cümlesel biçimdedir(sentential form) Bir cümle(sentence) sadece terminal semboller içeren cümlesel bir biçimdir Bir ensol türev(leftmost derivation), içindeki her bir cümlesel biçimdeki ensol nonterminalin genişletilmiş olmadığı türevdir( is one in which the leftmost nonterminal in each sentential form is the one that is expanded) Bir türev(derivation) ensol(leftmost) veya ensağ (rightmost) dan her ikisi de olmayabilir

Ayrıştırma Ağacı (Parse Tree) Bir türevin(derivation) hiyerarşik gösterimi <program> <stmts> <stmt> <var> = <expr> a <term> + <term> <var> const b

Gramerlerde Belirsizlik(Ambiguity) Bir grammer ancak ve ancak(iff) iki veya daha fazla farklı ayrıştırma ağacı(parse trees)olan bir cümlesel biçim(sentential form) üretiyorsa belirsizdir(ambiguous)

Bir Belirsiz Deyim 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

Bir belirsiz olmayan(Unambiguous) deyim Grameri Eğer ayrıştırma ağacını(parse tree) operatörlerin öncelik(precedence) seviyelerini göstermek için kullanırsak, belirsizlik elde edemeyiz <expr>  <expr> - <term> | <term> <term>  <term> / const| const <expr> <expr> - <term> <term> <term> / const const const

Operatörlerin Birleşirliği(Associativity) Operatör birleşirliği(associativity) de gramerle gösterilebilir <expr> -> <expr> + <expr> | const (ambiguous) <expr> -> <expr> + const | const (unambiguous) <expr> <expr> <expr> + const <expr> + const const

Extended BNF(Genişletilmiş BNF) Opsiyonel kısımlar köşeli parantez içine yerleştirilir ([ ]) <proc_call> -> ident [(<expr_list>)] RHS lerin(sağ-taraf) alternatif kısımları parantezler içine yerleştirilir ve dikey çizgilerle ayrılır <term> → <term> (+|-) const Tekrarlamalar(Repetitions) (0 veya daha fazla) süslü parantez ({ }) içine yerleştirilir <ident> → letter {letter|digit} brace

BNF ve EBNF BNF <expr>  <expr> + <term> EBNF <term>  <term> * <factor> | <term> / <factor> | <factor> EBNF <expr>  <term> {(+ | -) <term>} <term>  <factor> {(* | /) <factor>}

3.4 Özellik(Attribute) Gramerleri Bağlam-duyarsız(context-free) gramerler (CFGs) bir programlama dilinin bütün sentaksını tanımlayamazlar Ayriştirma ağaçlarıyla(parse trees) birlikte bazı semantik bilgiyi taşıması için CFG’lere eklemeler Özellik(attribute) gramerlerinin(AGs) birincil değerleri : Statik semantik belirtimi Derleyici(Compiler) tasarımı (statik semantik kontrolü)

Özellik(Attribute) Gramerleri: Tanım Bir özellik grameri G = (S, N, T, P) aşağıdaki eklemelerle birlikte bir bağlam-duyarsız gramerdir : Her bir x gramer sembolü için özellik değerlerinden(attribute values) oluşan bir A(x) kümesi vardır Her kural(rule), içindeki nonterminallerin belirli özelliklerini(attributes) tanımlayan bir fonksiyonlar kümesine sahiptir Her kural, özellik tutarlılığını(consistency) kontrol etmek için karşılaştırma belirtimlerinden(predicate) oluşan (boş olabilir) bir kümeye sahiptir

Özellik Gramerleri: Tanım X0  X1 ... Xn bir kural olsun S(X0) = f(A(X1), ... , A(Xn)) biçimindeki fonksiyonlar sentezlenmiş özellikleri (synthesized attributes) tanımlar I(Xj) = f(A(X0), ... , A(Xn)), i <= j <= n için, şeklindeki fonksiyonlar miras alınmış özellikleri (inherited attributes) tanımlar Başlangıçta, yapraklarda yerleşik özellikler(intrinsic attributes) vardır

Özellik Gramerleri : Örnek Sentaks <assign> -> <var> = <expr> <expr> -> <var> + <var> | <var> <var> A | B | C actual_type: <var> ve <expr> ile sentezlenmiştir expected_type: <expr> ile miras bırakılmıştır

3.4 Özellik Gramerleri (örn.) Sentaks kuralı: <expr>  <var>[1] + <var>[2] Semantik kurallar: <expr>.actual_type  <var>[1].actual_type Karşılaştırma belirtimi (Predicate): <var>[1].actual_type == <var>[2].actual_type <expr>.expected_type == <expr>.actual_type Sentaks kuralı: <var>  id Semantik kuralı: <var>.actual_type  lookup (<var>.string)

3.4 Özellik Gramerleri (örn.) Özellik(attribute) değerleri nasıl hesaplnaır? Eğer bütün özellikler miras alınmışsa, ağaç yukarıdan-aşağıya(top-down order) şekilde düzenlenir Eğer özellikler sentezlenmişse, ağaç aşağıdan-yukarıya(bottom-up order) şekilde düzenlenir. Çoğu kez, bu iki çeşit özelliğin her ikisi de kullanılır, ve aşağıdan-yukarıya ve yukarıdan-aşağıya düzenlerin kombinasyonu kullanılmalıdır.

3.4 Özellik Gramerleri (örn.)

3.4 Özellik Gramerleri (örn.) Ayrıştırma ağacının yaratılması <assign> <var> <expr> <var>[2] <var>[3] = + A A B

3.4 Özellik Gramerleri (örn.) A = A + B (yerleşik özelliklerin eklenmesi) <var>.actual_type  look-up(A) (Kural 4) <var>[2].actual_type look-up(A) (Kural 4) <var>[3].actual_type  look-up(B) (Kural 4) <assign> Actual_type = int <var> <expr> <var>[2] <var>[3] Actual_type = int Actual_type = real = + A A B

3.4 Özellik Gramerleri (örn.) A = A + B (miras alınmış özelliklerin elde edilmesi) <expr>.expected_type  <var>.actual_type (Kural 1) <assign> Actual_type Expected_type=int <var> <expr> <var>[2] <var>[3] Actual_type Actual_type = + A A B

3.4 Özellik Gramerleri (örn.) A = A + B (sentezlenmiş özelliklerin elde edilmesi) <expr>.actual_type  if (<var>[2].actual_type == int) and (<var>[3].actual_type ==int) then int else real end if <assign> Actual_type Expected_type <var> <expr> Actual_type = real <var>[2] <var>[3] Actual_type Actual_type = + A A B

3.4 Özellik Gramerleri (örn.) A = A + B (doğruluğun test edilmesi) <expr>.actual_type ==<expr>.expected_type <assign> Actual_type Expected_type Int == real is false <var> <expr> Actual_type <var>[2] <var>[3] Actual_type Actual_type = + A A B

Özet BNF ve bağlam-duyarsız gramerler eşdeğer meta-dillerdir Programlama dillerinin sentaksını tanımlayabilmek için uygundur Özellik grameri bir dilin hem sentaksını hem de semantiğini tanımlayabilen tanımlayıcı bir formalizmdir