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

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

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

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

Konular. Hafta 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

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

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

BIM Bahar Programlama Dilleri

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İ)

Syntax Analysis. 4/5/2004 Formal Diller 4.1

Tokenlarin Taninmasi

PASCAL PROGRAMLAMA DİLİ YAPISI

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İ

Formal Diller Ve Otomat Teorisi

Nesne Yönelimli Programlama

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İ

Volkan Karamehmetoğlu

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

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

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

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

Bilgisayar Programlama MATLAB

NESNEYE DAYALI PROGRAMLAMA VE C++

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

Dilbilgisi ve Diller

Veri Yapıları ve Algoritmalar

BİL1001 Bilgisayar Bilimlerine Giriş 1

KÜMELER. A = {x : (x in özelliği)} Burada x : ifadesi öyle x lerden oluşur ki diye okunur. Küme oluşturur. Çünkü Kilis in üç tane ilçesi.

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

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

10. ÜNİTE DİRENÇ BAĞLANTILARI VE KİRCHOFF KANUNLARI

Hafta 12 Karakter Tutan Diziler

AYRIK YAPILAR ARŞ. GÖR. SONGÜL KARAKUŞ- FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ BÖLÜMÜ, ELAZIĞ

Elemanların yerlerinin değiştirilmesi kümeyi değiştirmez. A kümesinin eleman sayısı s(a) ya da n(a) ile gösterilir.

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

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

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

Özyineleme (Recursion)

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

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

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

Algoritmalar ve Karmaşıklık

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

PROGRAMLAMA TEMELLERİ DERSİ

KODLAMA SİSTEMLERİNİN TANIMI :

1. PL/SQL de kontrol yapıları

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

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

Algoritma ve Akış Diyagramları

Kısmen insan davranışlarını veya sezgilerini gösteren, akılcı yargıya varabilen, beklenmedik durumları önceden sezerek ona göre davranabilen bir

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

Kümenin özellikleri. KÜMELER Burada x : ifadesi öyle x lerden oluşur ki diye okunur. Örnek: Kilis in ilçeleri

BİLGİSAYAR MİMARİSİ. Mimariye Giriş. Özer Çelik Matematik-Bilgisayar Bölümü

b Üslü Sayılara Giriş b İşlem Önceliği b Ortak Çarpan Parantezine Alma ve Dağılma Özelliği b Doğal Sayı Problemleri b Çarpanlar ve Katlar - Kalansız

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

Pascal Programlama Dili

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

Okunabilir Kod Yazım Standartları: Şiir Gibi Kod Yazmak

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

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

Bilgisayarda Programlama. Temel Kavramlar

Bölüm1. İlk Bilgiler ISBN

DERLEYİCİ TASARIMI ÖDEV-2 RAPORU

Lambda İfadeleri (Lambda Expressions)

Bilgisayar Programı Nedir?

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

Gramer Tabanlı Değerlendirme Yöntemleri

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-2 Değişken Kavramı ve Temel Operatörler

Bilgisayar Programlama MATLAB

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

Üstel modeli, iki tarafın doğal logaritması alınarak aşağıdaki gibi yazılabilir.

Genel Programlama II

BİLGİSAYAR PROGRAMLAMA MATLAB

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

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

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

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

a,b başlangıç değerlerini 0 kabul et a sayısını verin b sayısını verin hayır hayır b< a? evet a=b a değerini ekrana yaz

C Programlama Dilininin Basit Yapıları

Her veri tipine yetecek ve ancak o kadar anabellek alanı ayrılır. Programcı, ana bellekte ayrılacak adresin büyüklüğünü bilerek değişkenlerini

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

PROGRAMLAMA TEMELLERİ-ÜNİTE 2 SAYI SİSTEMLERİ, OPERATÖRLER VE İŞLEMLER

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

YZM 2116 Veri Yapıları

ALGORİTMA İ VE PROGRAMLAMA

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

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

Oracle Database 11g: Introduction to SQL

HSancak Nesne Tabanlı Programlama I Ders Notları

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.

ALGORİTMA VE PROGRAMLAMA I

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

İÇİNDEKİLER BİRİNCİ BÖLÜM BİLGİSAYARDA BELGE AÇMAK VE TEMEL İŞLEMLER YAPMAK

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

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

Yrd. Doç. Dr. Caner ÖZCAN

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

Bilgisayar Programlama Dilleri

Transkript:

Sentaks (Syntax): ifadelerin (statements), deyimlerin (expressions), ve program birimlerinin biçimi veya yapısı PDP 3 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 1-3 3 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. Dil, bir alfabedeki karakter dizilerinden oluşurlar. Dildeki karakter dizileri cümle veya deyim oluşturur. 4 4 5 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)) 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. 6 7 1

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 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 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. 10 11 Ö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].... Bağlam-Duyarsız (Context-Free) ve Backus-Naur Form () Gramerler Programlama dili sentaksını tanımlamayan en çok bilinen metottur. Extended (Genisletimis) un okunabilirliği ve yazılabilirliğini arttırır Gramerler ve tanıyıcılar (recognizers) start symbol Başlangıç nonterminali begin 12 14 2

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ı Backus-Naur Form (1959) John Backus tarafından Algol 58 i belirlemek için icat edildi bağlam-duyarsız (context-free) gramerlerin eşdeğeridir başka bir dili tanımlamak için kullanılan bir metadildir (metalanguage) 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) 15 16 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ı ile açıklanan bir gramer dört bölümden oluşur. Başlangıç sembolü, terminal semboller, lexemeler ve simgeler (tokens) terminal_olmayan semboller ( soyutlamaları) ve kurallar'dan oluşan gramer yapısı şekildeki gibi gösterilebilir: CFG expression identifier number - expression ( expression ) expression operator expression operator + - * / expression identifier number - expression ( expression ) expression operator expression operator + - * / 17 17 18 Javada atama ifadesinin 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 Örnek bir gramer <program> <stmts> <stmts> <stmt> <stmt> ; <stmts> <stmt> <var> = <expr> <var> a b c d <expr> <term> + <term> <term> - <term> <term> <var> 19 20 3

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

Gramer Türemiş deyim A=B+C*A 31 32 türemiş gramerden parse ağacı 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> / - 33 36 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 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 37 39 5

Opsiyonel/seçimli 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 E E 40 41 Tekrarlamalar (0 veya daha fazla) { } içine yerleştirilir <ident> letter {letter digit} <ident_list> <identifier> {, <identifier>} 42 43 <expr> -> '-' <num> <num> <num> -> <digits> <digits> '.' <digits> <digits> -> <digit> <digit> <digits> <digit> -> '0' '1' '2' '3' '4' '5' '6' '7' '8' '9 E <expr> -> '-' <digit>+ ('.' <digit>+) <digit> -> '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' 44 <expr> <expr> + <term> <expr> - <term> <term> <term> <term> * <factor> <term> / <factor> <factor> E <expr> <term> {(+ -) <term>} <term> <factor> {(* /) <factor>} 46 6

ve E'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. 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. 47 48 7