12.07.2015 Views

varmap

varmap

varmap

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Bölüm 3Sözdizimi(Syntax) veAnlamsal(Semantics)TanımlamaISBN 0-321-49362-1


Giriş• Sözdizimi(Syntax): Deyimlerin, ifadelerin veprogram birimlerinin biçimi ya da yapısı• Anlamsal(Semantics): Deyimlerin, ifadelerinve 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ı)Copyright © 2007 Addison-Wesley. All rights reserved. 1-3


Sözdizim(Syntax) tanımlamanın genelproblemi: 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 seviyelisözdizimsel birimidir(örn., *, sum, begin)• Bir simge(token) lexeme larınkategorisidir(örn., tanıtıcı(identifier))Copyright © 2007 Addison-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 okurve bu karakter dizisinin bu dile ait olupolmadığı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 olupolamdığı o dili üreten üretici incelenerek tespitedilebilir.Copyright © 2007 Addison-Wesley. All rights reserved. 1-5


Söz Diziminin Tanımında KullanılanResmi Metotlar• Backus-Naur Form and Serbest- İçerikGramerleri(Context-Free Grammars)– Programlama dillerinin söz dizimlerinitanımlamada kullanılan en yaygın metottur.• Genişletilmiş BNF(Extended BNF)– BNF nin okunabilirliğini ve yazılabilirliğiniarttırır.• Gramerler ve Dil TanıyıcılarıCopyright © 2007 Addison-Wesley. All rights reserved. 1-6


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


Backus-Naur Form (BNF)• Backus-Naur Form (1959)– John Backus tarafından Algol 58 i tanımlamakiçin keşfedildi.– BNF serbest içerik gramerlerinin(context-freegrammars) eşleniğidir.– BNF bir metalanguage dir be başka bir dilanımlar– BNF de, soyutlamalar söz dizimsel yapılarınsınıflarını temsil etmek için kullanılır. Sözdisimsel değişkenler gibi davranırlar(sonolmayan semboller:nonterminal symbolsadlanırlar.)Copyright © 2007 Addison-Wesley. All rights reserved. 1-8


BNF Temelleri• Son Olmayan semboller(Non-terminals): BNFsoyutlamaları(abstractions)• Son semboller(Terminals): lexeme lar ve token lar• Gramer: bir kurallar koleksiyonudur.– Örnek BNF kuralları: → identifier | identifier, → if then Copyright © 2007 Addison-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 sonolan(terminal) ve son olmayan (nonterminal)sembollerden oluşur.• Bir gramer sonlu boş olmayan kurallarkümesidir.• Bir soyutlamanın(abstraction) (ve ya son olmayansembol) birden fazla sağ tarafı olabilir. → | begin endCopyright © 2007 Addison-Wesley. All rights reserved. 1-10


Tanımlama Listeleri• Söz dizimsel listeler yineleme(recursion)kullanılarak tanımlanır. → ident| ident, • 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 bircümle de biter.Copyright © 2007 Addison-Wesley. All rights reserved. 1-11


Bir örnek gramer → → | ; → = → a | b | c | d → + | - → | constCopyright © 2007 Addison-Wesley. All rights reserved. 1-12


Bir örnek türetme => => => = => a ==> a = + => a = + => a = b + => a = b + constCopyright © 2007 Addison-Wesley. All rights reserved. 1-13


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


Ayrıştırma Ağacı(Parse Tree)• Bir türetmenin hiyerarşik temsilidir. = a+ constCopyright © 2007 Addison-Wesley. All rights reserved. 1-15b


Gramerlerin belirsizliği(Ambiguity)• Bir gramerdeki bir cümlesel biçim iki veyadaha fazla ayrıştırma ağacı(parse tree)oluşturuyorsa bu gramerbelirsiz(ambiguous) adlanır.Copyright © 2007 Addison-Wesley. All rights reserved. 1-16


Bir belirsiz deyim(expression) grameri → | const → / | - const - const / const const - const / constCopyright © 2007 Addison-Wesley. All rights reserved. 1-17


Bir belirsiz deyim(expression) grameri• Eğer ayrıştırma ağacındaişleçlerin(operators) öncelik seviyelerigösterilirse belirsizlik olmaz. → - | → / const| const-/constCopyright © 2007 Addison- const constWesley. All rights reserved. 1-18


İşleçlerin Birleşikliği(Associativity ofOperators)• İşleç birleşikliğide bir gramerde gösterilebilir.• -> + | const (ambiguous) -> + const | const (unambiguous)+const+constCopyright © 2007 const Addison-Wesley. All rights reserved. 1-19


Genişletilmiş BNF(Extended BNF)• Seçimli olan parçalar [ ] içinde tanımlanır. -> ident [()]• Sağ tarafın(RHS) alernatif seçeneklikısımları parantez içinde dikey çubuklarile ayrılarak gösterilir. → (+|-) const• (0 ya da daha fazla) tekrarlamalar { }içinde yazılır. → letter {letter|digit}Copyright © 2007 Addison-Wesley. All rights reserved. 1-20


BNF and EBNF• BNF → + | - | → * | / | • EBNF → {(+ | -) } → {(* | /) }Copyright © 2007 Addison-Wesley. All rights reserved. 1-21


Özellik Gramerleri(Attribute Grammars)• Serbest içerik gramerleri programlamadillerinin tüm söz dizimini tanımlamazlar• Serbest içerikli gramerlere ayrıştırmaağaçları ile birlikte bazı anlamsal bilgileriçeren eklentiler katılır.• Özellik gramerlerinin birinci değeri– Statik anlamsal belirtimler(Static semanticsspecification)– Derleyici tasarımı (static semantics checking)Copyright © 2007 Addison-Wesley. All rights reserved. 1-22


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


Özellik Gramerleri : Tanımlama(Definition)• X 0→ X 1... X nbir kural olsun• S(X 0) = f(A(X 1), ... , A(X n)) biçimindekifonsiyonlar sentezlenmiş özellikleri(synthesized attributes) tanımlar.• I(X j) = f(A(X 0), ... , A(X n)), for i


Özellik Gramerleri: Bir örnek• Sözdizimi(Syntax) -> = -> + | A | B | C• actual_type: ve içinsentezlenir• expected_type: için kalıtılır.Copyright © 2007 Addison-Wesley. All rights reserved. 1-25


Özellik Gramerleri (devam)• Sözdizim kuralı(Syntax rule): → [1] + [2]Anlamsal Kurallar(Semantic rules):.actual_type ← [1].actual_typeYüklemsel(Predicate):[1].actual_type == [2].actual_type.expected_type == .actual_type• Sözdizim kuralı(Syntax rule): → idAnlamsal Kural(Semantic rule):.actual_type ← lookup (.string)Copyright © 2007 Addison-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ıdanaşağıya sırada(top-down order) dekoreedilebilmelidir.– 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 dekullanılır, ve yukarıdan aşağıya ; aşağıdanyukarıya dekorasyon kullanılır.Copyright © 2007 Addison-Wesley. All rights reserved. 1-27


Özellik Gramerleri (devam).expected_type ← inherited fromparent[1].actual_type ← lookup (A)[2].actual_type ← lookup (B)[1].actual_type =?[2].actual_type.actual_type ←[1].actual_type.actual_type =?.expected_typeCopyright © 2007 Addison-Wesley. All rights reserved. 1-28


Anlamsallar(Semantics)• Anlamsalları tanımlamakiçin geçiş çaptakabul 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 ederya da gerçekten çaıştırır. Makinenindurumundaki(bellek-memory, yazmaçlarregisters)değişiklik ifadenin anlamını tanımlar.Copyright © 2007 Addison-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ı karakteristiklerieylemleri anlamayı zorlaştıracaktır.– Bu tip bir anlamsal tanımlama makine-bağımlıolacaktır.Copyright © 2007 Addison-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 ekkitabı gibi)– Resmi kullanılırsa oldukça karmaşık(örn., VDL), PL/Inın anlamsallarını tanımlamak içişn kullanılmıştır.Copyright © 2007 Addison-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(budeyimlerden başka deyimleredönüştürmeye izin verir)• Deyimler iddialar(assertions) olarakadlandırılır.Copyright © 2007 Addison-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) enaz kısıtlayıcı önkoşuldur ve bu koşul postcondition ı garanti eder.Copyright © 2007 Addison-Wesley. All rights reserved. 1-33


Aksiyomsal Anlamsal Biçimler(Axiomatic SemanticsForm)• 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}Copyright © 2007 Addison-Wesley. All rights reserved. 1-34


Program kanıt süreci(Program Proof Process)• Tüm program için önkoşul istenilensonuçtur.– Programın ilk ifadesine doğru geriye doğruçalışılır. Eğer ilk ifadenin önündeki ön koşulprogram belirtimi ile aynıysa, programdoğrudur.Copyright © 2007 Addison-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'Copyright © 2007 Addison-Wesley. All rights reserved. 1-36


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


Aksiyomsal Anlamsal: Aksiyomlar(Axioms)• Amntıksal öndenetimli döngü için bir girişimkuralı{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)Copyright © 2007 Addison-Wesley. All rights reserved. 1-38


Aksiyomsal Anlamsal: Aksiyomlar(Axioms)• Döngü değişkeninin karakteristikleri: Iaş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.Copyright © 2007 Addison-Wesley. All rights reserved. 1-39


Döngü Değişmezi(Loop Invariant)• I döngü değişkeni döngü postcondition nınzayıflatılmış versiyonudur.ve ayrıca bir önkoşuldur.• I döngü başlamadan öncede doğru olacakşekilde yeteri kadar zayıf olmalıdır, fakatdöngü sonlanma şartı ile birleştirildiğindepost condition ı doğrulayacak kadar dakuvvetli olmalıdır.Copyright © 2007 Addison-Wesley. All rights reserved. 1-40


Aksiyomsal Anlamsal ların hesaplanması• Dildeki tüm ifadeler için aksiyonlar vegirişim kuralları tanımlamak zordur.• Doğruluk kontrolü için iyi bir araçtır veprogramlardan sonuç çıkarmadakullanılır.Kafat dil kullanıcılarıo ve derleyicitasarımcıları için iyi değildir.• Bir programlama dilinin anlamınıanlamadaki kullanılışlığı dil kullanıcıları vederleyici tasarımcıları için iyi değildir.Copyright © 2007 Addison-Wesley. All rights reserved. 1-41


Gösterimsel Anlamsallar (DenotationalSemantics)• Özyinelemeli fonksiyon temellidir.• En soyut anlamsal tanımlama metodudur.• Scott and Strachey (1970) tarafındangeliştirilmiştir.Copyright © 2007 Addison-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 birmatematiksel nesne tanımlanır.– Dilin varlıklarının uygun gelen matematikselnesne örneklerine eşleyen bir fonksiyontanımlanır.• Dil yapılarının anlamı sadece programdeğişkenlerinin değerleri ile tanımlanır.Copyright © 2007 Addison-Wesley. All rights reserved. 1-43


Gösterimsel Anlamsallar -İşlemselAnlamsallarda• İşlemsel anlamsallarda,durum değişikliklerikodlarla tanımlanır• Gösterimsel anlamsallarda, durumdeğişiklikleri katı matematiksel fonksiyonlarile tanımlanır.Copyright © 2007 Addison-Wesley. All rights reserved. 1-44


Gösterimsel Anlamsallar: ProgramDurumu• Bir programın durumu mevcut durumdakitüm değişkenlerinin değerleridir.s = {, , …, }• VARMAP bir fonksiyon olsun, bir değişkenismi ve durum verildiğinde değişkeninmevcut durumdaki değerini versin.VARMAP(i j, s) = v jCopyright © 2007 Addison-Wesley. All rights reserved. 1-45


Ondalık Sayılar → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9| (0 | 1 | 2 | 3 | 4 |5 | 6 | 7 | 8 | 9)M dec('0') = 0, M dec('1') = 1, …, M dec('9') = 9M dec( '0') = 10 * M dec()M dec( '1’) = 10 * M dec() + 1…M dec( '9') = 10 * M dec() + 9Copyright © 2007 Addison-Wesley. All rights reserved. 1-46


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


3.5 AnlamsallarM e(, s) ∆=case of => M dec(, s) =>if VARMAP(, s) == undefthen errorelse VARMAP(, s) =>if (M e(., s) == undefOR M e(., s) =undef)then errorelseif (. == ‘+’ thenM e(., s) +M e(., s)else M e(., s) *M e(., s)iki işlenene(operand) ve bir işleçe(operator)sahip deyim yazılmıştır.Copyright © 2007 Addison-Wesley. All rights reserved. 1-48


Atama İfadeleri(Assignment Statements)• Durum kümesini başka durum kümesine eşlerMa(x := E, s) ∆=if Me(E, s) == errorthen errorelse s’ ={,,...,},where for j = 1, 2, ..., n,v j’ = VARMAP(i j, s) if i j x= Me(E, s) if i j== xCopyright © 2007 Addison-Wesley. All rights reserved. 1-49


Mantıksal Önkoşullu döngüler• Durum kümesini durum kümesine eşlerM l(while B do L, s) ∆=if M b(B, s) == undefthen errorelse if M b(B, s) == falsethen selse if M sl(L, s) == errorthen errorelse M l(while B do L, M sl(L, s))Copyright © 2007 Addison-Wesley. All rights reserved. 1-50


Döngü Anlamı(Loop Meaning)• Döngünün anlamı; programdeğişkenlerinin, döngü içindeki ifadelerbelirlenen sayıda işlendikten sonrakideğerleridir.• Öz olarak, döngü iterasyondanözyinelemeye dönüştürülür, buradaözyinelemi kontrol başka bir özyinelemlidurum eşleme fonksiyonu ile tanımlanır.• özyineleme(recursion), iterasyona görematematiksel olarak daha kolay tanımlanır.Copyright © 2007 Addison-Wesley. All rights reserved. 1-51


Gösterimsel anlamsalların hesaplanması• Programların doğruluk kanıtındakullanılabilir• Programlar hakkında özenlidüşü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.Copyright © 2007 Addison-Wesley. All rights reserved. 1-52


Özet• BNF ve serbest içerik gramerleri(contextfreegrammars) eş meta dillerdir.– Programlama dillerinin söz diziminitanımlamada kullanılırlar.• Bir özellik grameri(attribute grammar) hemsözdizimi hemde anlamsal tanımlamayapabilir. Anlamsal tanımlamada üç temelyöntem vardır.– İşlemsel(Operation),aksiyomatik( axiomatic),gösterimsel(denotational)Copyright © 2007 Addison-Wesley. All rights reserved. 1-53

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!