Jump to page: 1 2 3
Thread overview
D modül dosyasını ayıklama
Jul 12, 2012
zafer
Jul 12, 2012
zafer
Jul 12, 2012
zafer
Jul 13, 2012
zafer
Jul 14, 2012
Salih Dinçer
Jul 15, 2012
zafer
Jul 15, 2012
Salih Dinçer
Jul 16, 2012
zafer
Jul 16, 2012
Salih Dinçer
Jul 16, 2012
Salih Dinçer
Jul 16, 2012
zafer
Jul 16, 2012
Salih Dinçer
Jul 16, 2012
Kadir Can
Jul 16, 2012
Salih Dinçer
Jul 16, 2012
Kadir Can
Jul 16, 2012
Salih Dinçer
Jul 16, 2012
zafer
Jul 16, 2012
Salih Dinçer
Jul 17, 2012
zafer
July 12, 2012

D modül dosyaları içindeki metot başlıklarını ayıklamak istiyorum. Örneğin stdio modülünde bulunan seek() metodunun başlık bilgisini almak gibi;

void seek(long offset, int origin = SEEK_SET)

Bunun için nasıl bir yol izlemeliyim. Bu tür örnek programlar var mı?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 12, 2012

Hımm... Bu bekledigimden çok daha iyi bir cevap ancak bir sıkıntı var. Sanırım her dosya için dmd -X komutunu elle yapmamız gerekiyor. Bu süreci program içinde otomatikleştirme şansımız var mı? Aksi takdirde malesef bu yapı işime yaramıyor.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 12, 2012

dmd -X ile bir JSON dosyası oluşturabiliyor (-Xf seçeneği de oluşan dosyanın ismini belirleyebiliyor):

'dmd /usr/include/x86_64-linux-gnu/dmd/phobos/std/stdio.d -c -X'

Oluşan stdio.json dosyasının ilgili bölümü:

{
"name" : "seek",
"kind" : "function",
"protection" : "public",
"type" : "void(long offset, int origin = 0)",
"line" : 551}

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 12, 2012

Nasıl kullanacağını tam anlamadım ama bu adım Makefile'a (veya programı oluşturan betiğe, vs.) eklenebilir ve o otomatik olarak halleder.

Veya senin yazmakta olduğun program dmd'yi std.process.system() ile kendisi çağırabilir.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 12, 2012

Alıntı (acehreli):

>

Nasıl kullanacağını tam anlamadım

Aslında yapmak istedigim phobos kütüphanesindeki tanımları bir listeye doldurmak. Bunun için aklımda net bir fikir yok. Hatta modül dosyası içindeki enum, struct, class, metot gibi yapıları nasıl ayıklayabilecegimide bilmiyorum.

Senin verdigin örnek güzel ama sanırım benim asıl yapmam gereken dmd -X ile yapılan işlemi kodlamak sonrasında ise örnek json dosyasına benzer şöyle bir yapı işimi görür diye düşünüyorum.

{
'"modul" : "stdio",'
"name" : "seek",
"kind" : "function",
"protection" : "public",
"type" : "void(long offset, int origin = 0)",
"line" : 551
}

Tüm bilgiyi tek bir dosyada toplamayı düşündüğüm için modul isimli bir alana ihtiyacım olacagını düşünüyorum. Belki ileride başka alanlarda eklenebilir.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 13, 2012

Modül bilgisi dosyanın içindeki "kind" : "module" satırında var.

Bence bütün dosyaları dirEnries() ile gezmek ve her birisi üzerinde dmd -X işletmek pek zor değil.

http://dlang.org/phobos/std_file.html#dirEntries

Enum'lar filan da hep güzelce taranıyorlar:


{
"name" : "OpenRight",
"kind" : "enum",
"protection" : "public",
"line" : 3728,
"base" : "int",
"members" : [
{
"name" : "no",
"kind" : "enum member",
"protection" : "public",
"line" : 3729}
,
{
"name" : "yes",
"kind" : "enum member",
"protection" : "public",
"line" : 3730}
]
}
,

Böylece bütün bilgi tek klasörde durabilir. Tek dosyada toplamak isteniyorsa da bütün dosyalar açılır, her bir JSON elemanına "modul" satırı eklenerek tek dosyaya yazılabilir.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 13, 2012

Alıntı (acehreli):

>

Enum'lar filan da hep güzelce taranıyorlar:

Önceki mesajımdada belirttigim gibi bu dosya bencede çok güzel, hatta işimin %90'lık kısmını hallediyor. Ancak diger tarafatan dmd ve -X bagımlılığı getiriyor. İleride dmd üzerinde oluşacak bir değişiklik benim programımında hatalı çalışmasına sebeb olabilir.

Bundan dolayı dmd -X'in yaptıgı işlemi ben kendi kodlarımla yapabilmeliyim. Böylece ileride kendimce geliştirebilecegim daha esnek bir yapı kurabilirim.

Şimdilik şu adresdeki dsplit (https://github.com/CyberShadow/DustMite) modülünü inceliyorum. Konuya çok uzak olduğum için ne araştırıcağımı ve nereden başlayacagımıda bilemiyorum. Her türlü öneriye açığım.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 14, 2012

Ben DustMite'ı tam çalıştıramamıştım. Yani derlemiştim ama reduced dizini meydana gelmemişti. Belkide bulunduğum kullanıcı haklarıyla ilgili bir şeydi, bilemiyorum. Sen de çalıştı mı?

Çekincelerine ben de hak veriyorum. Bu durum .d kaynak dosyalarını inceleyen bir ara&bul algoritması yazmamız lazım. Bunun için sanırım güzel parantezin ilk olarak açıldı {... ve son olarak kapandığı ...} işaretlere bakıp aralarındakileri silmeliyiz. Zaten modül ismi kolay olmalı. Ancak gerek yapılar olsun gerekse işlevler, bazı özel durumlara sahip olduklarını da dikkate almalıyız. Örneğin işlevlerde in { ... } ve out { ... } kümeleri kullanıldıysa işleri karıştırabilir.

İstersen bu konuda bir arama algoritmasına başlayalım, ne dersin?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 15, 2012

Doğrusu DustMite'ı çalıştırmadım sadece dsplit modülünün kaynak kodlarını inceliyordum.

Salih, haklısın modül dosyasını tarayacak bir kod geliştirmeliyiz. Tabi ki önce algoritmasını hazırlarsak kodlama aşamasında çok rahat ederiz diye düşünüyorum. Diğer taraftan dmd -X yönteminin çıktısı çok temiz ve çok hoşuma gitti. Acaba diyorum bu parametrenin nasıl çalıştığını araştırsak bizim için iyi bir başlangıç noktası olmaz mı? Çünkü bu şekilde bir kod dosyasının nasıl ayıklanacağı ile ilgilil benim hiçbir fikrim yok :scared:

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 16, 2012

Bu, verinin bir kısmını filitre edeceğimiz için hem çok kolay hem de teferruatlı bir şey. Aslında yapacağımız bir lexer yazmak. Hatta belkide onun bile yazılmışının bir kısmını alabiliriz. Bence DustMite yerine Aziz Köksal'ın dil projesine bakmalıyız: http://code.google.com/p/dil/wiki/Source?tm=4

Sanırım tek yapacağımız açılan güzel parantezleri sayıp en dıştakilere bağlı olan satırları (dikkat bazı işlevler bir kaç satır olabiiiyor) almak. Tabi bunun içinde de küçük bir delimitation yapmamız gerekecek. Orada fazlalık parametre olabilir. Aslında güzel parantezler yanından comment ve q" ile başlayan dizgelere de dikkat etmek gerek. Çünkü bunlar içinde güzel parantezler olabilir. İşte bu da teferruat kısmı...:)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

« First   ‹ Prev
1 2 3