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

Benzer belgeler
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

Konular. Hafta 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

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

YZM Biçimsel Diller ve Otomata Teorisi. Ders#06

BLM210 HAFTA 2 FORMAL METHODS OF SYNTAX DESCRIPTION (SÖZDİZİM TARİFİNİN BİÇİMSEL YÖNTEMLERİ)

BIM Bahar Programlama Dilleri

Bölüm 3. Sözdizimi(Syntax) ve Anlamsal(Semantics) Tanımlama ISBN

Tokenlarin Taninmasi

KARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR SİSTEMLERİ LABORATUARI BISON AYRIŞTIRICI (PARSER) ÜRETECİ

Syntax Analysis. 4/5/2004 Formal Diller 4.1

Formal Diller Ve Otomat Teorisi

Bölüm 4. Sözcüksel ve Sözdizimsel Analiz ISBN

PASCAL PROGRAMLAMA DİLİ YAPISI

Bölüm 8. İfade Seviyesindeki Kontrol Yapıları ISBN

Bölüm 4. Sözcüksel ve sözdizimsel analiz ISBN

Nesne Yönelimli Programlama

BAĞLAMDAN BAĞIMSIZ (CONTEXT-FREE) GRAMERLER (CFG) VE DİLLER (CFL)

Gramer Tabanlı Değerlendirme Yöntemleri

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Biçimsel Diller ve Otomata Teorisi. Final Sınavı Soruları A KİTAPÇIĞI

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Biçimsel Diller ve Otomata Teorisi. Final Sınavı Örnek Soruları A0 KİTAPÇIĞI

! " # $ % & '( ) *' ' +, -. /) /) 0 # /) %, %, 1 2

İfadeler bir programlama dilinde hesaplamaları belirtmede temel araçtır. İfadelerin değerlendirmesini anlamak için,

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

Regular Expression vs. Context-Free Grammars. Ambiguity. NFA to CFG. Neden RE ler kullanilir?

1. PL/SQL de kontrol yapıları

FORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 3

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

Algoritma ve Akış Diyagramları

Bölüm 7. İfadeler ve atamalar ISBN

FORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 2

Chapter 8. Komut düzeyi kontrol yapıları ISBN

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

Veri Yapıları ve Algoritmalar

BİL1001 Bilgisayar Bilimlerine Giriş 1

FORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 1

Bilgisayar Programlama Dilleri

Bölüm 4. Sözcük ve Sentaks Çözümlemesi ( Analizi) ISBN

Hafta 12 Karakter Tutan Diziler

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı Đlkbahar Dönemi 13 Nisan Ad, Soyad Öğrenci No.

Dilbilgisi ve Diller

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

İÇERİK PROGRAMLAMAYA GİRİŞ ALGORİTMA AKIŞ DİYAGRAMLARI PROGRAMLAMA DİLLERİ JAVA DİLİNİN YAPISI JAVA DA KULLANILAN VERİ TİPLERİ JAVA DA PROGRAM YAZMA

Lambda İfadeleri (Lambda Expressions)

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Algoritma ve Akış Diyagramları

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Bölüm 2 Varlık-İlişki Veri Modeli: Araçlar ve Teknikler. Fundamentals, Design, and Implementation, 9/e

ÇÖZÜMLÜ ÖRNEK 3.5 ÇÖZÜM

Özyineleme (Recursion)

PROGRAMLAMA DİLLERİ. Programlama Dilleri Programlama Dillerinin Önemi Dilleri Sınıflandırılması Anlambilim BNF Notasyonu Kontrol Deyimleri

YZM 2116 Veri Yapıları

BAĞLAMDAN BAĞIMSIZ VE BAĞLAMDAN BAĞIMSIZ OLMAYAN DİLLER (CONTEXT-FREE AND NON-CONTEXT-FREE LANGUAGES)

Pascal Programlama Dili

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

KARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR SİSTEMLERİ LABORATUARI BISON AYRIŞTIRICI (PARSER) ÜRETECİ

Oracle Database 11g: Introduction to SQL

Derleyici Kuramı (Compiler Theory)

Bölüm 7. Deyimler ve Atama ifadeleri ISBN

En kucuk calisabilir birime satetement denir Statements semicolon (;) ile sonlanir Yalniz basina ; null statement i ifade eder

Mantıksal İşlemler. 7.1 true, false, nil

BİL1002 Bilgisayar Programlama PROF.DR.TOLGA ELBİR

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları

BTP208 İnternet Programcılığı II XML ve XML Uygulamaları. (2. Kısım)

C PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

BİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2

BİLGİSAYAR PROGRAMLAMA MATLAB

BİL-142 Bilgisayar Programlama II

! " # $ % & '( ) *' ' +, $ $ - $ (. $- $ ( / $ % / $ 0 -( 1( $ (2- -(

VT Sistem Gerçeklemesi. Ders Notları- #8

Algoritmalar ve Karmaşıklık


YIĞINLAR YIĞINLAR. Yığın İşlemleri Postfix, Prefix, Infix. G. Ü. Bilgisayar Mühendisliği Bölümü

C Programlama Dilininin Basit Yapıları

Bölüm 1. Ön Hazırlıklar ISBN

Bir seçme komutu yürümekte olan programda iki veya daha fazla yoldan birini seçmemizi sağlar. İki sınıfa ayrılır:

Bilgisayarda Programlama. Temel Kavramlar

1 PROGRAMLAMAYA GİRİŞ

PROGRAMLAMAYA GİRİŞ VE ALGORİTMA «YTÜROK» EĞİTMEN:REHA ÖZGÜR ŞİMŞEK

Veritabanı Tasarımı. Sütunlar, Karakterler ve Satırlar ile Çalışma

Bölüm1. İlk Bilgiler ISBN

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Context-Free Grammars and Languages

Bilgisayar Programı Nedir?

Dekleratif Programlama. Örnek : Aile Ağacı. SWI-Prolog. Prolog Dekleratif programlama dili

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

Bilgisayar Programlama MATLAB

YZM 2105 Nesneye Yönelik Programlama

Genel Programlama II

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

BİLGİSAYAR PROGRAMLAMA DERSİ

LINQ (Temel Kavramlar)

PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.

Transkript:

PDP 3 1 Sentaks (Syntax): ifadelerin (statements), deyimlerin (expressions), ve program birimlerinin biçimi veya yapısı Semantik (Semantics): ifadelerin, deyimlerin, 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ı Uygulayıcılar (Implementers) Programcılar (dilin kullanıcıları) 1-3 3 1

Bir dilde bulunan her yapıdaki anlamlı bileşenler o dilin soyut sözdizimi, tanımlar. +ab prefix ifadesi, a+b infix ifadesi, ab+ postfix ifadelerindeki + işlemcisi ve a ve b alt-ifadelerinden oluşan aynı anlamlı bileşenleri içermektedir. 4 4 Dil, bir alfabedeki karakter dizilerinden oluşurlar. Dildeki karakter dizileri cümle veya deyim oluşturur. 5 2

Cümle (sentence) herhangi bir alfabede karakterlerden oluşan bir stringdir Dil (language) cümlelerden oluşan bir kümedir Lexeme bir dilin en alt seviyedeki sözdizimsel (syntactic) birimidir ( *, sum, begin) Simge (token)(andaç) lexemelerin bir kategorisidir, lexeme'lerin gruplanması ile oluşan sınıflardır (tanıtıcı (identifier)) 6 Programlar, karakterler yerine lexeme'ler dizisi olarak düşünülebilir. Sözdizim kuralları: Hangi karakter dizilerinin o dilin alfabesinden ve o dile ait olduğunu belirlerler. Diller sözdizimsel olarak basittir. 7 3

Dilin metinsel sözdizimi, token'lar dizisidir. Örneğin bir tanımlayıcı; ortalama veya ogrenci gibi lexeme'leri olabilen bir token'dır. Bir token'ın sadece tek bir olası lexeme'i olabiliri. Örneğin, çarpma_işlemcisi denilen aritmetik işlemci *" sembolü için, tek bir olası lexeme vardır. Boşluk (space), ara (tab) veya yeni satır karakterleri, token'lar arasına yerleştirilmesi programın anlamına etkisi yoktur. 8 9 4

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ı Üreteçler (Generators) Bir dilin cümlelerini üreten aygıttır Belli bir cümlenin sentaksının doğru olup olmadığı, üretecin yapısıyla karşılaştırılarak anlaşılabilir 10 Bir programlama dilinin metinsel sözdizimini açıklamak için Gramer, kullanılır. Gramerler, anahtar kelimelerin (keywords) ve noktalama işaretlerinin yerleri; deyim listelerinin nasıl oluşturulacağını belirleyen bir dizi kuraldan oluşur. 11 5

Örnek Statement = "if" "(" Condition ")" Statement ["else" Statement] 4 bileşenden oluşur terminal symbols atomik "if", ">=", ident, number,... nonterminal symbols Sözdizim değişkenleri Statement, Expr, Type,... productions Nonterminallerin çözümü Statement = Designator "=" Expr ";". Designator = ident ["." ident].... start symbol Başlangıç nonterminali begin 12 Bağlam-Duyarsız (Context-Free) ve Backus-Naur Form (BNF) Gramerler Programlama dili sentaksını tanımlamayan en çok bilinen metottur. Extended BNF (Genisletimis) BNF un okunabilirliği ve yazılabilirliğini arttırır Gramerler ve tanıyıcılar (recognizers) 14 6

Bağlam-Duyarsız Gramerler (CFG) (Serbest İçerik Gramerleri ) Noam Chomsky tarafından 1950lerin ortalarında geliştirildi Dil üreteçleri (generators), doğal dillerin sentaksını tanımlamak için Bağlam-Duyarsız (Context-Free) diller adı verilen bir diller sınıfı daha sonra programlama dillerini uygulandı 15 Backus-Naur Form (1959) 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 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) 16 7

Terminal semboller değişmez semboller, uç semboller de denir. ( ; gibi yapılar terminal sembollerdir. Productions: türetme kuralları söz dizim değişkenlerini türetme kuralları BNF ile açıklanan bir gramer dört bölümden oluşur. Başlangıç sembolü, terminal semboller, lexemeler ve simgeler (tokens) terminal_olmayan semboller (BNF soyutlamaları) ve kurallar'dan oluşan BNF gramer yapısı şekildeki gibi gösterilebilir: 17 17 CFG expression identifier number - expression ( expression ) expression operator expression operator + - * / BNF expression identifier number - expression ( expression ) expression operator expression operator + - * / 18 8

Javada atama ifadesinin BNF formu <assign> -> <var> => <expression> Kuralın sol tarafı (left hand side- LHS) sağ tarafı (right hand side - RHS) vardır ve terminal ve nonterminal sembollerden oluşur Bir gramer, kuralların boş olmayan sonlu bir kümesidir Bir soyutlama / nonterminal sembol birden fazla RHS ye sahip olabilir <stmt> <single_stmt> begin <stmt_list> end 19 Örnek bir gramer <program> <stmts> <stmts> <stmt> <stmt> ; <stmts> <stmt> <var> = <expr> <var> a b c d <expr> <term> + <term> <term> - <term> <term> <var> 20 9

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 boş olmayan sonlu bir kümesidir Bir soyutlama / nonterminal sembol birden fazla RHS ye sahip olabilir <stmt> <single_stmt> begin <stmt_list> end 21 22 10

Bir türetme 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. 1-23 23 24 11

Sentaktik listeler özyineleme (recursion) kullanılarak tanımlanır <ident_list> ident ident, <ident_list> BNF kurallarından örnekler: <ident_list> identifier identifer, <ident_list> <if_stmt> if <logic_expr> then <stmt> 26 Bir türetimin hiyerarşik gösterimi 30 12

Gramer 31 Türemiş deyim A=B+C*A 32 13

türemiş gramerden parse ağacı 33 Bir grammer ancak ve ancak iki veya daha fazla farklı ayrıştırma ağacı olan bir cümlesel biçim üretiyorsa belirsizdir (ambiguous) <expr> <expr> <op> <expr> const <op> / - 36 14

Eğer ayrıştırma ağacını operatörlerin öncelik seviyelerini göstermek için kullanırsak, belirsizlik elde edemeyiz <expr> <expr> - <term> <term> <term> <term> / const const 37 Operatör birleşirliği de gramerle gösterilebilir <expr> -> <expr> + <expr> const (ambiguous) <expr> -> <expr> + const const (unambiguous) <expr> <expr> + const <expr> + const const 39 15

BNF Opsiyonel/seçimli kısımlar köşeli parantez [ ] içine yerleştirilir <proc_call> -> ident [(<expr_list>)] EBNF 40 RHS lerin (sağ-taraf) alternatif kısımları parantezler içine yerleştirilir ve dikey çizgilerle ayrılır BNF EBNF 41 16

Tekrarlamalar (0 veya daha fazla) { } içine yerleştirilir <ident> letter {letter digit} <ident_list> <identifier> {, <identifier>} 42 43 17

BNF <expr> -> '-' <num> <num> <num> -> <digits> <digits> '.' <digits> <digits> -> <digit> <digit> <digits> <digit> -> '0' '1' '2' '3' '4' '5' '6' '7' '8' '9 EBNF <expr> -> '-' <digit>+ ('.' <digit>+) <digit> -> '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' 44 BNF <expr> <expr> + <term> <expr> - <term> <term> <term> <term> * <factor> <term> / <factor> <factor> EBNF <expr> <term> {(+ -) <term>} <term> <factor> {(* /) <factor>} 46 18

BNF ve EBNF'teki kurallar, ayrıştırma ağacı dışında sözdizim grafikleri (syntax graphs) ile de gösterilebilir. Sözdizim grafikleri, ilk olarak Pascal'ın gramerini açıklamak için kullanılmıştır. 47 Bu derste olması gereken özellik gramerleri, Aksiyomatic Semantik sunuya eklenmemiştir. Bahsi geçen konular vizeden sonra derste ele alındıktan sonra sunuya ilave edilerek güncellenecektir. 48 19