SixPairs

June 10, 2014

Dsl inceleyen Dsl

Filed under: DSL — Ceyhun Ciper @ 07:58

Aslinda daha once MVVM generate etmek icin DSL’leri inceleyip ViewModel’lari create eden bir MVVMGen DSL’i yaratmistim; bunun ilk etabi bir DSL definition’i icindeki tum verileri toparlayip custom bir XML generate etmek olmustu. Ama DSL’leri zaten XML editlememek icin kullanmiyor muyum? Bu nedenle dsl’leri inceleyen bir dsl ihtiyaci hasil oldu.

Ilk yaklasimda MVVMGen sunu yapiyordu:

  1. Bir template ile bir dsl definition’inini analiz et
  2. Belli bir semaya uygun xml datasi gen. et
  3. xml datasindan C# class’lari generate et

1. adim zaten sakat: template’ler (debug edilebilmesine ragmen) pek kolay kullanimli degil; ozellikle intellisense sucks. Bu nedenle dsl designer extension’larina switch ettim. O zaman durum su:

  1. Dsl designer extension’lariyla dsl definition’ini analiz et
  2. Belli bir semaya uygun xml datasi gen. et
  3. xml datasindan C# class’lari generate et

2. adim icin de once bir sema tanimladim, sonra da xml’i buna gore (de)serialize ettim; ama iste burda “niye dsl’leri kullanmiyorum” diye kandime sormaya basladim… Yani dsl’in dsl’i… Ama sadece incelemek icin, yani bir meta-dsl degil. Boylelikle sema falan da yaratmaya veya xsd.exe’yi kullanmaya gerek kalmiyor.

3. adim icin ise template’ler kullanmak yerine Roslyn’i kullanmak daha mantikli.

2. adimin pre-requisite’leri:

  1. Load/save the dsl programmatically (easy)

 

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

Create a free website or blog at WordPress.com.