rapor ile kod arasindaki mood verbler check edilecek
degistir fiili, degis kokunden uretilemiyor, sebebi kodumuzdaki dHr ekinin sonsuz donguye girmesi.(bkz. Yapim ekleri problemi)
mood degisimleri su anda ms (mood syntax)den cikiyorlar, bu gelen semantik bilgisine gore tujanin moodunu degistirmemiz gerekiyor. Bunun icin bir global variable tutup tujanin moodunu burada saklayabiliriz. Ancak yeni bir mood degistirme cumlesi geldikten sonra bu variable ve dolayisiyla tujanin moodu degisirler.
Ms_compoundu su anda kodlamiyoruz, ilerid yapilabilir, cunku mood degistirme cumlesinin ardindan gelen moodun degisitirilmis halini tasiyan cumlelerin ayni anda girilmesi su anda cok onemli degil. Biz sadece mood degistirme cumlelerini aliyoruz, sonra o moodda istedigi kadar compound cumle girebilir. İlerde hem mood degistirme hemde compound cumleler bu catida birlesir.
Moodlar su anda current_mood isimli bir predicate da duruyorlar, buradan current mood okunuyor. Mood_anla fonksiyonu calisiyor, verilen cumleye gore, moodda degisim yapiyor (sadece degistir ve tanimla moodlari icin calisiyor, ilknur bir sonraki haftaya bunlari tamamlayacak).
Current_class diye bir fonskiyon eklenecek. Sayet verilen degistirme cumlelerinde hangi class oldugu soylenmezse, enson touch edilen class degistirilecek. Ikinci bir alternatif, verilen butun classlarin sirasinin tutulmasi ve enson gecen kelimeye gore indexlenmesi. (bu durumda her kelime icin en son kullanilan class ismi de tutulmali)
(ornegin, otomobil renge sahiptir, insan undan sudan ekmek yapar, cumlelerinden sonra rengi degistir denilirse, biz insanlar bu rengin otomobilin rengi oldugunu anlariz. O zaman enson ismi gecen classin ismi tutulacak.) Bu durumda her kelime icin databasede hangi classta enson gectigi tutulacak, bunlarin filea yazilmasi gerekmiyor, session based dusunuyoruz, on gun once renkten bahseden biri onu hatirlayip gizli ozne kullanmaz (ASSUMPTION). Sayet bu oturumda hic renk kelimes gecmediyse, kimin rengi oldugunu tuja anlayamiyacak, bu durumda hangi class diye soracak.
Silme fiili verildiginde veya olumsuz ek
verildiginde (ornegin otomobil benzin tuketmez), ya fonksiyon tamamen
silinecek, ya da fonksiyondan bu parametre silinecek. Sayet fonksiyondan
parametre siliniyorsa, fonksiyonu tamamen silen bir cumle yapisi da bulmak
gerek.
Anything
Attributes
U:-Rengi değiştir
T:neyle degistireyim?
U:Model ile degistir.
U: Renk tamsayısını değiştir
T: -İsmini mi, cinsini mi?
U: -Cinsini
T: Neyle degistireyim?
U: Karakter ile degistir.
Rengi modele değiştir (Rengi modelle degistir)
Rengi karaktere değiştir
U: Renk tamsayı değildir
T: Renk Nedir?
U: Renk bir karakterdir
Renk karakterdir
Otomobilin rengi karakterdir.
Methods
void Tuket(Benzin benzin){}
U: Benzin tüket metodunu değiştir
T: -Parametresini mi,adını mı?
U: -Parametresini
T: Hangi parametresini?
U: Benzin parameteresini.
T: -İsmini mi, cinsini mi?
U: -Cinsini
T: Neyle degistireyim?
U: Karakter ile degistir.
Otomobil benzin tüketmez -> Fonsiyonu sil
Otomobil benzin değil, kurşunsuz
benzin tüketir void Tuket(KusunsuzBenzin
kusunsuzBenzin){}
Benzin bir tamsayıdır void Tuket(int benzin){}
Tüket metodu güç üretir Guc Tuket(Benzin benzin){}
Tay Dogur(){}
Tay doğur metodunu değiştir
-Dönen değerini mi,adını mı?
-Dönen değerini
At tay
doğurmaz Fonsiyonu sil
At tay değil, toy tay döndürür ToyTay
Dogur(){}
Doğur metodu güç tüketir Tay Dogur(Guc guc){}
Ekmek Uret(Su
su,Un un){}
İnsan undan ekmek üretmez Ekmek Uret(Un un){}
İnsan sadece sudan ekmek üretir Ekmek
Uret(Su su){}
İnsan kepekli undan sudan ekmek üretir Ekmek
Uret(Su su,Kepekliun kepekliUn){}
İnsan kepekli undan sudan kepekli ekmek
üretir Kepekliekmek Uret(Su su,Kepekliun kepekliUn){}
Su bir içecektir Ekmek Uret(İçecek su,Un un){}
İnsan undan değil,kepekli undan
sudan ekmek üretir Ekmek Uret(Su su,Kepekliun kepekliUn){}
İnsan undan sudan ekmek üretmez Fonksiyonu
sil
İnsan undan sudan hiçbirşey üretmez void Uret(Su su,Un un){}
İnsan hiçbirşeyden ekmek üretir Ekmek Uret(){}
Relations
Her su bir içecektir ?????? Yeni bir relation eklemeye istediğimizde karışabilir
Her su bir içecek değildir
Ms icin yazilan, syntaxlerdeki anything sorunu cozuldu, artik tuja ile baslayip mood belirten bir fiille biten her cumlenin aralarda ne olduguna bakmaksizin alinmasi mumkundur. Hatta aralarda mood belirten fiiller bile kullanilabilir. Yaptigimiz sistem sondaki kelimenin mood kelimesi olup olmadigini kontrol ediyor. İlerde mood belirten kelime gruplari olursa sorun olabilir.(tek kelime kontrolu yapiyoruz).
Tuja hitap sorunu cozuldu (adkokleri kucukyazmisiz).
Moodlar için cumle yapilari belirlenmeye baslandi. Buna gore tuja ile başlayanlar mood değiştirme komutu olacak. Sonunda bulunan fiile göre hangi mooda işaret ettiği bulunmaya çalışılacak.
Mod giriş cümleleri
(Tuja), Anything , [tanımla|oluştur|yarat]
(Tuja), Anything , [değiştir]
(Tuja), Anything , [kaydet|yükle]
(Tuja), Anything , [ekle|yaz|yap]
(Tuja), Anything , [yorumlayacağım]
(Tuja), Anything , [cevapla|sor|iste|ver|ara|sorgula|bilgilendir]
(Tuja), Anything , [yorumla]
(Tuja), Anything , [kodla|üret|oluştur|yarat] ****
**** bu grup ile 1. grup formulleri benzerlik içerirler, ayrit etmek icin cumlenin anything kelime grubunda, sayet dosya, kaynak, java veya kod gibi kelimler geciyorsa bunun 6. gruba girmesi gerektigini dusunuyoruz. Bunlar gecmiyorsa 1. gruba girmeli diye dusunuyoruz.
Modlar ustu cumle yapisi olarak
{mod giriş cümleleri}, [[geç|dönüştür|çevir] X [istiyorum]]
moodlarin programlamasi:
moodlar icin asagidaki listeyi olusturduk:
kullaniciya bu listeyi gosterdikten sonra, kullanicidan bilgi bekliyoruz, bilgi menuden numara ile olabilir, menudekinin ismi olabilir, yada tamamen dogal dilde bir komut olabilir. (ts)
mood icin kip, hava veya durum kelimelerini dusunuyoruz.
Her mood icin ayni tsi kullanmakla beraber, farkli semanticler kullanarak hangisine girdigimizi anlayip sonucu islemeyi dusunuyoruz, boylece kullanici her cumle girisinde kip degistirmeyi yapabilir.
Mood.pl dosyasi yapildi, bunun gorevei girisi takib etmek ve mooda gore alt filelara yonlendirmek artik tuja.pl iskelet olusturucu ve kod cevirici modullerini iceriyor. Mood.pl bu dosyayi cagiriyor.
Moodlar arasinda gecis icin, kullanici tuja ile baslayan bir hitap cumlesi kullanabilir (ornegin tuja yorum ekle) veya tuja menuye don diyerek ana menuden moodlari gorerek yeniden mood secebilir.
Mood sentence ornekleri:
Sayilar (listeden bir eleman sayisi tek basina girilebilir).
Listedeki yazilarin aynisi girilebilir
Tujaya hitab edilebilir.
formul: [tuja]+[yeni]+[bir]+{yapı|mastar|iskelet|şablon|kalıp|ana kalıp}+{oluştur|tanımla|yarat}
formul:[tuja]+[yeni]+[bir]+{yapı|mastar|iskelet|şablon|kalıp|ana
kalıp}+{oluştur|tanımla|yarat}+{kipine|moduna|havasına|durumuna|haline}+{geç|dönüştür|çevir}
a. eski iskeleti | yapıyı | şablonu | kalıbı değiştir
b. eski bir iskeleti | yapıyı | şablonu | kalıbı değiştir
c. var olan iskeleti | yapıyı | şablonu | kalıbı değiştir
d. var olan bir iskeleti | yapıyı | şablonu | kalıbı değiştir
e. daha önce yarattığım iskeleti | yapıyı | şablonu | kalıbı değiştir
f. yaratılmış iskeleti | yapıyı | şablonu | kalıbı değiştir
g. eski bir yapıyı değiştir kipine geç
h. değiştir
i. değiştimek istiyorum
Alt
Komut: iskeleti sil
a. yapıyı sil
b. var olan yapıyı sil
c. eski yapıyı silme kipine geç
a.
yazdığım | oluşturduğum iskeleti kaydet
b.
yeni iskeleti kaydet
c.
kaydet yükle moduna geç
d.
yükle moduna geç
e.
kaydet moduna geç
f.
kaydet
g.
yükle
h. kaydetmek istiyorum
i. yüklemek istiyorum
j.
yeni iskeleti kaydetmek | yüklemek
istiyorum
a. iskelete yorum ekleme | yazma moduna geç
b. yorum ekle | yaz
c. açıklama yap | yaz | ekle
d. iskelete yardımcı bilgi ekle | yaz
e. yeni yorum eklemek istiyorum
a.
soru cevap moduna geç
b.
iskelete soru sor
c.
iskeleti sorgula
d.
soru sor
e.
sorgula
f.
var olan iskeleti sorgula
g.
var olan iskelete soru sor
h.
sorularımı cevapla
i.
iskeletle ilgili soru sor
j.
iskeletle ilgili sorularımı cevapla
k. cevap iste
l. sorularıma cevap ara
m. iskelet hakkında bilgi ver
n. iskelet hakkında beni bilgilendir
o. beni bilgilendir
a. iskeleti javada kodla
b. kodla
c. iskeleti kodla
d. javada kodla
e. java kodu üret
f. kaynak dosyayı üret | oluştur | yarat |
g. java kaynak dosyasını oluştur | yarat | üret
h. javaya çevir
i. kodlama moduna geç
j. iskletin eşdeğer java kodunu göster
k. javada kodlatmak istiyorum
l. kodlatmak istiyorum
m. kaynak dosyayı görmek istiyorum
n. kaynak dosyayı göster
soru: ts icine mood cumle yapilari eklenirse tslerin bozulma ihtimali var, dolayisiyla iskelet tanim cumleleri bozulur.
Ms ayrica tanimlanirsa, morpfolojik yapilari bozulacaginda, msde kullanilan ozel kelimeler ts tarafindan taninmayacak. Dolayisiyla gec donus cevir gibi kelimeleri kullani kullanamayacak.
Ucuncu alternatif, hem syntax hem morfolojiyi ayirmak sorunu cozer gibi goruluyor ama dulicate is ve kod var, ne kadar dogru?
Otomobile yorum
ekle/yaz
Otomobilin yorumu
olsun
Class(A,B,C,D,E,F,NewEntry)
Bu NewEntry commenti tutacak.
Otomobilin
tüketymek metıduna yorum ekle
arc(1100,121100,'nokta').
arc(1100,131100,'virgul').
arc(1100,141100,'soruisareti').
arc(1100,151100,'unlem').
arc(1100,161100,'noktalivirgul').
arc(1100,171100,'ikinokta').
arc(1100,181100,'dotdotdot').
arc(1100,101100,'#').
Yukaridaki kodda, 12den 18e kadar olan arclar imla isaretlerini gosterir, 10 ile baslayan arc ise empty state olarak kabul eder.
Skeleton yaratma
Skeleton
modification/deletion
Yükle kaydet, dosya
adı, kullanıcı bilgisi tarih, proje ismi
Yorum ekle
Soru/Cevap
Kodlama ---- for
loops,etc.Kendi içinde moodlara sahip.Get/Ser olsun,yorum ekle gibi
Her
otomobil bir otomobildir
İki adet otomobil classı cıkartıyor ve sorunlu calısıyor. Kullanıcının hata yapmayacagını dusunuyorz.
01/03/2004
Devrik cümleler, fiilimsiler, bileşik cümleler ve bağlaçlar implement edilecek
Kısaltmalar için bir kısaltma listesi tutulacak (altyapisi hazir kelime girilmesi gerek).
Sayılar cümle sonunda bulunamaz.Bir sayının sonuna nokta geliyorsa bu onun birinci,ikinci gibi sıra belirttiğini gösterir.Bu nedenle FSMe 602. noddan önce yeni bir node eklenecek.Sayıdan sonra nokta gelirse, 602inci noda gitsin.Nokta inci ekiyle değiştirilecek.
import için bir kelime düşünülecek ve implement edilecek.
ler,-lar eki geldiğinde objectler array olarak create edilecek.
Roma rakamlarını implement eden bir mekanizma bulunacak.
Kesme işareti, @ isareti, implement edilecek.
Comment implement edilecek (bunu mood
olarak yeni raporda hallediyoruz)
13/01/2004
Paper yazimi ile ilgili degisiklikler:
(sadi sorumlu)
sekiller duzenlenip sekillerdeki
ornekler, sekillerine yanina konulacak (bu durumda ornekler figur numarasi b,
sekiller ise figur numarasi a olacaklar)
FSM lerin giris ve cikislari belirgin
hale getirilecek (girilen yerler ok ile belirtilecek, final stateler cift daire
olacak)
Fiil tipleri aciklanacak (4 tip fiilimiz
var bunlar hakkinda bir aciklama paper'a eklenecek)
access modifierlar aciklanacak
(propertyler private, fonksiyonlar public oluyor getter ve setter otomatik
generate ediliyor vs.)
Referanslara ATN paperi eklenecek (koymenin
paperi duzeltilecek)
Datastructurelarin memoryde durdugunu ve
generationin bir komutla yapildigi anlatilacak.
Interface mekanizmasi anlatilacak
Examplelar ilknurdan geldigi sekilde
duzenlenecek
Kod ile ilgili degisiklikler: (ilknur
sorumlu)
implement edilenler 1 seviye track
edilecek (implementin extend ettikleri track edilmeyecek, ancak birden fazla
sey implement edildiyse hepsi track edilecek) bu interfacelerin method ve
propertyleri implement eden class'a otomatik olarak yazilacak (ancak icleri bos
olacak (ornegin return gibi seyler olmayacak))
Unutulmamasi gereken hatirlatmalar
ilerde birden fazla seviyeli
implementsleri handle etmek gerekebilir
imla isaretleri (nokta virgul oncelikli
olmak uzere) eklenebilir
anaphora resolution (virgullu sekli oncelikli
olmak uzere) koda eklenebilir
Programcılık arkaplanı olan, ama JAVA bilmeyen kişiler ile görüşülüp, programları türkçe cümleler ile anlatmaları istenilecek. Bu sırada kullanılan cümleler ileride TuJA projesine dahil edilmek üzere saklanacak.
Interface kavramı için kural ve soyut kavram|sınıf|obje anahtar kelimeleri kullanılmasına karar verildi. Bu durumda kullanıcı bu anahtar kelimeler ile tek başına bir interface tanımlayabileceği gibi, aynı anahtar kelimeler ile bir sınıfın interface alanına da ekleme yapabilecek. Interface bir liste olarak tutulacak ve birden fazla interface eklenebilecek. Bu ekleme ve tanımlama işlemlerinin sırası önemli olmayacak.
2. maddeden dolayı, extends edilebilen sınıflar bir taneden fazla olamayacak. Şayet ikinci bir inheritance ilişkisi gerektiren obje gelirse, JAVA'nın sunduğu implements çözümü ile inheritance ilişkisi kuralacak.
Modifier(public,private,protected) kelimeleri için bir çözün aranacak. Şayet method içlerini yazarken kullanılan çözümler uygun bulunursa bunlar attribute ve method tanımlamalarında da kullanılacak.
Attributelar tanımlanırken -ler eki gelirse, bu attributun array olması gerekiyor demektir. Sayı gelirse (örn. Küp 6 kareden oluşur), new kelimesi ile obje tanımlanabilir.