Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Slayt
1.
2. Syntax: Sözdizimi anlamına gelir. Özel bir programlama dilinde
ifadelerin uymak zorunda olduğu kurallar.
Semantics: Deyimlerin,program birimlerinin anlamlarını ifade
eder.
Dil: Syntax ve Semantics dili tanımlar.
Lexeme: Dilin en küçük birimidir.
Token: Lexeme’lerin kategorisidir.
3. DİLLERİN RESMİ TANIMI
Recognizers(Dil Tanıyıcısı): Dilden karakter dizisi okur. Dile
ait olup olmadığına karar verir. Girilen ifade “print” mi diye bakar.
Generators(Dil Üreticisi): Dile ait cümle üretir. Syntax’ın
doğruluğunu kontrol eder. “print” doğru yazılmış mıdır?
Programlama Dili Oluşturmak İçin Neler
Gereklidir?
Dilin gramer kuralları nasıl olmalı?
Statementlar
Assignment
Hazır fonksiyonlar ve kütüphaneleri bulundurmak
ALU’ya erişim,programlama dili donanım kaynaklarına erişim
yapabilmeli( ekran,CPU,RAM,ekran kartı,CACHE,portlar,I/O)
5. Backus-Naur Form (BNF): Metalanguage(başka bir dil tanımlar)
bir dildir.
BNF ile açıklanan bir gramer dört bölümden oluşur.
Başlangıç (amaç)sembolü, terminal semboller, terminal_olmayan
semboller ve kurallardan oluşan BNF gramer yapısı aşağıdaki şekildeki
gibi gösterilebilir.
Soyutlamalar,sözdizimsel yapıların sınıflarını temsil etmek için
kullanılır. Non-terminaldir.
Terminals : lexemelar ve tokenlar.
Dilin kurallarının başlangıç sembolünden başlayarak sıra ile cümle
oluşturulmasına türetme denir.
6. TÜRETME ÖRNEĞİ
<program> => <stmts> => <stmt>
=> <var> = <expr> => a =<expr>
=> a = <term> + <term>
=> a = <var> + <term>
=> a = b + <term>
=> a = b + const
AYRIŞTIRMA AĞAÇLARI
Ağacın en aşağıdaki düğümlerinde
terminal semboller yer alır.
Diğer düğümleri ise dil yapısını
tanımlayan terminal olmayan
sembolleri içerir.
7. EBNF: BNF’in geliştirilmiş halidir.
EBNF'te Seçimlik (optionality), Yineleme (repetition) ve
Değiştirme(alternation) olmak üzere üç özellik yer almaktadır.
8. • BNF
<expr> ® <expr> + <term>
| <expr> - <term>
| <term>
<term> ® <term> * <factor>
| <term> / <factor>
| <factor>
• EBNF
<expr> ® <term> {(+ | -) <term>}
<term> ® <factor> {(* | /) <factor>}
Sağ tarafta yinelenecek ya da yer almayacak bölümü göstermek “ {}”
Grup içinden tek eleman seçilmesi gerektiğinde “|”
9. Belirsiz Grammer (ambigiuos) : İki veya daha fazla ayrı
parse ağacı oluşturan grammerdir.
Operatörlerin öncelikleri gösterilirse belirsizlik olmaz.
<assign> → <id>=<expr>
<id>→A|B|C
<expr>→<expr>+<expr>
|<expr>*<expr>
|(<expr>)
|<id>
Belirsiz gramerdir çünkü gramer hem sağa hem sola büyümeye izin
verir. Derleyiciler parse tree temelinde hazırlanır. Bu yüzden belirsizlik
problem oluşturur.
12. X0 →X1….Xn bir kural.
S=A(X1) gibi fonksiyonlar sentezlenmiş özellikleri tanımlar.
I(X) fonksiyonlar da kalıtılmış özellikleri tanımlar.
A(x) özellik değerleri kümesidir,her kural fonksiyonlar kümesine
sahiptir. Her kural özelliklerin tutarlığını kontrol eden yüklemseller
kümesine sahiptir(predicates).
Sentezlenmiş özellikler parse tree de anlamsal bilginin yukarı
taşınmasında,kalıtsal özellikler ise aşağı taşınmasında kullanılır.
Böylece fonksiyon değeri kardeş düğümler veya ebeveynlerden gelir.
15. Aksiyomatik Anlamlar (Axiomatic Semantics):Programdaki her
ifadede değişkenlerin kısıtları tanımlanır( iddialar).
Programların doğruluğunu kanıtlamada kullanılır.
İfadeden önceki iddaa pre, sonraki iddaa post conditiondur.
Böylece programın ispatı yapılmış olur.
Ör:
Sum=2*x+1 (sum>1)
16. Gösterimsel anlamsallar (denotational semantic): Recursive
temelli çalışır.
Her varlık için matematiksel nesne tanımlanır ve fonksiyon tanımlama
vardır.