BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ

Slides:



Advertisements
Benzer bir sunumlar
Derleyici Araçları FLEX & BISON
Advertisements

Derleyici Teorisine Giriş
Sözcüksel Çözümleme/Analiz (Lexical Analysis)
Sözcüksel Çözümleme/Analiz (Lexical Analysis)
Sentaks (Sözdizim) ve Semantik (Anlam)
BISON (YACC) (Yet Another Compiler Compiler)
Bölüm 3: Sentaks ve Semantiği Tanımlama
Hâsılat kavramları Firmaların kârı maksimize ettikleri varsayılır. Kâr toplam hâsılat ile toplam maliyet arasındaki farktır. Kârı analiz etmek için hâsılat.
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.
PROLOG. Prolog Programlarının özellikleri: - Programming in Logic teriminin kısaltılmasıyla adlandırılmıştır. - Semboller üzerinde çalışma prensibi üzerine.
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Hazırlayan: Dr. Emine CABI
1. Ders Bir, İki ve Üç Yazarlı Eserlerin Kataloglanması Prof. Dr. Bülent Yılmaz Arş. Gör. Tolga Çakmak.
TC Windows Editörü DevC++. KURULUM PROGRAMIN KURULACAĞI YER BURADA BELİRLENİYOR.
9. HAFTA 25 Nisan2016. Fonksiyon M-Dosyaları Fonksiyon dosyaları ilk satırda “function” kelimesi bulunan “.m” uzantısı bulunan dosyalardır. MATLAB içinde.
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.
BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ Dil Çevrimi (Hafta4) 1.
Öğretim İlke ve Yöntemleri: Öğrenme Stratejileri
Bölüm 2 C Dilinin Temelleri
0-1 Sırt Çantası Problemi
11. SINIF: ELEKTRİK ve MANYETİZMA ÜNİTESİ Alternatif Akım 1
Algoritma ve Programlamaya Giriş
PROGRAMLI ÖĞRETİM Tanımı:
BM-103 Programlamaya Giriş Güz 2016 (3. Sunu)
Problem Çözme ve Algoritmalar
DİL ÇEVRİMİ Yüksek düzeyli bir dilde yazılmış bir program ancak makine diline çevrilerek bir bilgisayarda çalıştırılabilir.
ÖZDEŞLİKLER- ÇARPANLARA AYIRMA
BİLİŞİM SİSTEMLERİ GÜVENLİĞİ (2016)
Bilginin Organizasyonu
TEMEL GEOMETRİK KAVRAMLAR VE ÇİZİMLER
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.
Buluş nedir?.
KÜMELER HAZIRLAYAN : SELİM ACAR
PIRLS (The Project of International Reading Language Skills-Uluslararası Okuma Becerileri Projesi) Yrd. Doç. Dr. Ömer Kutlu.
Sentaks ve Semantiği tanımlama
PROBLEM ÇÖZME VE ALGORİTMALAR
Bölüm 6 Örgütsel Yönlendirme
İSTATİSTİK Yrd. Doç. Dr. Cumhur TÜRK
Bilgisayar Mühendisliğine Giriş
Hayvancılık İşletmelerinde Yönetim Prensipleri
Sentaks ve semantik tarifi
Bölüm 7 İfadeler ve atamalar.
KAVRAM HARİTALARI.
Bölüm 4: Kontrol Yapıları I (Seçim Yapma)
Komut düzeyi kontrol yapıları
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
Sonlu Özdevinirlere Giriş
BENZETIM 3. Ders Prof.Dr.Berna Dengiz Monte Carlo Benzetimi
Fonksiyonlar ve Alt Programlar
Bilgisayar Bilimi Fonksiyon Yazma.
Değerler ve Değişkenler
Ders 2: Yazılım Geliştirme
Evren-Örneklem, Örnekleme Yöntemleri 1
NİŞANTAŞI ÜNİVERSİTESİ
BLM-111 PROGRAMLAMA DİLLERİ I Ders-10 Diziler
Bölüm 1 Giriş. Bölüm 1 Giriş Teknolojik Yeniliğin Önemi Teknolojik yenilik günümüzde birçok endüstrideki rekabet başarısının en önemli tek itici gücüdür.
NİŞANTAŞI ÜNİVERSİTESİ
MTM216 GÖRSEL PROGRAMLAMA
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
Bilimsel Araştırma Yöntemleri
Ortam-Bağımsız Gramerler (OBG)
NİŞANTAŞI ÜNİVERSİTESİ
2. HAFTA Bilimsel Araştırma Temel Kavramlar.
Sunum transkripti:

BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ Tarihi Gelişimi (Hafta3)

Bölümün Amacı Programlama dillerinde sözdizim ve anlam kavramları, Soyut sözdizim, metinsel sözdizim ve gramer kavramları, Ayrıştırma ağaçlarının ve türetmelerin oluşturulması, Sözdizim tanımlanması için kullanılan BNF metadili, Anlam tanımlama ve dilin standartlaştırılması

GİRİŞ Yazılan bir programın o dile ait olup olmadığını belirleyen kurallar, sözdizim (syntax) ve anlam (semantics) olarak ikiye ayrılabilir. Bir programın begin ile başlayıp end ile bitmesi, her deyimin sonunda noktalı virgül bulunması (sözdizim kuralları), bir değişkenin kullanılmadan önce tanımlanması (anlam kuralı) gibi. 

Bir dilin sözdizimini anlatmak amacıyla kullanılan bir araç vardır Bir dilin sözdizimini anlatmak amacıyla kullanılan bir araç vardır. BNF (Backus-Naur Form) metadili böyle bir araçtır. Anlam tanımlama için böyle bir dil yoktur. if(x=5) x=y;

SOYUT SÖZDİZİM  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.

Bu nedenle ağaç olarak üçünün de gösterimi aşağıdaki şekildeki gibidir.

 if a > b then a else b

METİNSEL SÖZDİZİM Dil, bir alfabedeki karakter dizilerinden oluşurlar. Dildeki karakter dizileri cümle veya deyim oluşturur. Sözdizim kuralları: Hangi karakter dizilerinin o dilin alfabesinden ve o dile ait olduğunu belirlerler. Diller sözdizimsel olarak basittir.

SÖZDİZİM (devam) Lexeme:Bir programlama dilindeki en düşük düzeyli sözdizimsel birimlerdir. Programlar, karakterler yerine lexeme'ler dizisi olarak düşünülebilir. Token :Bir dildeki lexeme'lerin gruplanması oluşan sınıflardır.

Dilin metinsel sözdizimi, token'lar dizisidir. Örneğin bir tanımlayıcı (identifier); 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.

lexical analysis (scanning) character stream v a l = 1 * v a l + i lexical analysis (scanning) token stream 1 (ident) "val" 3 (assign) - 2 (number) 10 4 (times) 5 (plus) "i" token number token value

PROGRAMLAMA DİLLERİNDE GRAMER Bir programlama dilinin   metinsel (somut) 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.

lexical analysis (scanning) character stream v a l = 1 * v a l + i lexical analysis (scanning) token stream 1 (ident) "val" 3 (assign) - 2 (number) 10 4 (times) 5 (plus) "i" token number token value syntax analysis (parsing) syntax tree ident = number * ident + ident Term Expression Statement

Grammar Nedir? Example Açıklamalar 4 bileşenden oluşur Statement = "if" "(" Condition ")" Statement ["else" Statement]. Açıklamalar 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

Arithmetik İfadelerin Grameri Productions Expr = [ "+" | "-" ] Term { ( "+" | "-" ) Term }. Term = Factor { ( "*" | "/" ) Factor }. Factor = ident | number | "(" Expr ")". Expr Terminal symbols simple TS: terminal classes: "+", "-", "*", "/", "(", ")" (just 1 instance) ident, number (multiple instances) Term Factor Nonterminal symbols Expr, Term, Factor Start symbol Expr

Backus-Naur Form (BNF)-CFG expression  identifier | number | - expression | ( expression ) | expression operator expression operator  + | - | * | / BNF expression  identifier | number | - expression | ( expression ) | expression operator expression operator  + | - | * | /

EBNF Notation Extended Backus-Naur form symbol meaning examples string John Backus: developed the first Fortran compiler Peter Naur: edited the Algol60 report symbol meaning examples string name = . "=", "while" ident, Statement A = b c d . | (...) [...] {...} separates alternatives groups alternatives optional part repetitive part a | b | c  a or b or c a ( b | c )  ab | ac [ a ] b  ab | b { a } b  b | ab | aab | aaab | ...

Değiştirme (alternation) |

Gramerler ve Türetimler

Örnek expression  identifier | number | - expression | ( expression ) | expression operator expression operator  + | - | * | / slope * x + intercept ifadesini türetelim.

slope * x + intercept expression  expression operator expression  expression operator intercept  expression + intercept  expression operator expression + intercept  expression operator x + intercept  expression * x + intercept  slope * x + intercept expression * slope * x + intercept  metasymbol: replacement of some non-terminal Result: yield of derivation Right-most derivation

Ayrıştırma Ağacı(Parse Trees) Türetimin grafik gösterimi Right-most derivation

Belirsiz Gramer Bir gramerde aynı ifade için alternatif ayrıştırma ağacı bulunuyorsa bu gramer belirsizdir (ambiguous) Left-most derivation

Belirsizlik kaldırılmalıdır. 10 – 4 – 3 ==== (10 – 4) – 3 3 + 4 * 5 ==== 3 + (4 * 5)

3 + 4 * 5 için Parse ağacı

Operator Priority   input: - a * 3 + b / 4 - c Expr = [ "+" | "-" ] Term { ( "+" | "-" ) Term }. Term = Factor { ( "*" | "/" ) Factor }. Factor = ident | number | "(" Expr ")". input: - a * 3 + b / 4 - c - ident * number + ident / number - ident  - Factor * Factor + Factor / Factor - Factor  Expr = Term { ( "+" | "-" ) Term }. Term = Factor { ( "*" | "/" ) Factor }. Factor = [ "+" | "-" ] ( ident | number | "(" Expr ")" ).

Sözdizim Grafikleri 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.

ANLAMSAL TANIMLANMA Bir programlama dilinin anlam (semantic) kuralları, bir dilde sözdizimsel olarak geçerli olan herhangi bir programın anlamını belirler.

Anlam tanımlama Anlamsal tanımlama için varolan yöntemler oldukça karmaşıktır ve hiçbir yöntem sözdizim tanımlamak için kullanılan BNF metadili gibi yaygın kullanıma ulaşmamıştır.

Anlam tanımlama Anlam tanımlama için, dil yapılarının Türkçe gibi bir doğal dilde açıklanması sağlanır. Ancak doğal dil kullanılarak yapılan açıklamalar, açık ve kesin olmaz.

Durağan Anlam Kuralları Dinamik anlam Kuralları

PROGRAMLAMA DİLLERİNİN STANDARTLAŞTIRILMASI Dilin sözdizimi ve anlamı tam ve açık olarak tanımlanmalı ve dil standardı oluşturulmalıdır. Bir dil standardı, dil tasarımcısı, dil tasarımını destekleyen kuruluş veya Amerika Birleşik Devletleri'nde American National Standards Institute (ANSI) yada International Standards Organization (ISO) tarafından gerçekleştirilebilir gibi bir kuruluş tarafından tanımlanabilir.

Bölüm Özeti Metinsel Sözdizim Gramer, BNF, EBNF Türetim ve türetme ağaçları Belirsizlik Belirsizliğin kaldırılması

Kaynaklar: Programmnig Languages:Concepts&Constructs, Second Edition,Ravi Sethi. Concept og Programming Languages, Fourth Edition, Robert W. Sebesta.

BNF: Backus-Naur Form 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ıç (amaç) sembolü, terminal semboller, terminal_olmayan semboller ve kurallar'dan oluşan BNF gramer yapısı aşağıdaki şekildeki gibi gösterilebilir: