Script.NET - Script.NET

Script.NET
Paradigmazorunlu, meta, komut dosyası oluşturma
GeliştiriciMicrosoft
Yazma disiplinidinamik
Platform.NET Framework
LisansBedava
İnternet sitesiwww.protsyk.com/ scriptdotnet
Tarafından etkilenmiş
JavaScript

Script.NET veya S # bir metaprogramlama komut dosyası işlevselliği sağlayan dil Microsoft .NET uygulamalar, izin verme Çalışma süresi özel işlevselliğin yürütülmesi, benzer VBA içinde Microsoft Office uygulamalar. Script.NET sözdizimi şuna benzer: JavaScript. .NET uygulamalarını özelleştirmeye izin veren basit ve verimli bir betik dili olacak şekilde tasarlanmıştır. Dil, gerçek bir çalışma zamanı yorumlayıcısına sahiptir ve ek bellek içi derlemeler oluşturmadan yürütülür.

Script.NET açık kaynaklı bir projedir.

Metaprogramlama özellikleri

Script.NET özel bir teklif operatörüne sahiptir <[ program ]> hangi döndürür AST belirli bir programın. Ek olarak, mevcut programın AST'sine, prog nesne.

İşte bir örnek:

// MessageBox.Show ('Merhaba') için bir AST oluşturun; programast = <[ Mesaj Kutusu.Göstermek('Merhaba'); ]>;// Bu AST'yi mevcut programın sonuna ekleyinprog.AppendAst(ast);

<[ ... ]> operatör ve prog nesneleri, Script.NET'in çalışma zamanında yeni komut dosyaları oluşturmasına veya mevcut komut dosyalarını değiştirmesine izin verir.

Genelleştirilmiş nesneler

Script.NET, her türden nesneyi kontrol etmek için özel bir tür "meta" nesneler tanıtan "Mutantic Framework" adı verilen bir yapı içerir. Üstünde "DataMutant" sınıfı bulunan bir sınıf kümesinden oluşur. Mutant nesnenin birkaç ilkesini uygular:

Tanım

Mutant, tüm özelliklere (alanlar, yöntemler, vb.) Sahip olabilen ve herhangi bir türe dönüştürülebilen (veya herhangi bir türdeki nesneye atanabilen) özel bir nesnedir. Bu tür bir dönüşümün (veya atamanın) anlambilimi pragmatik olarak koşulludur.

Özel bir operatör var := Mutantik veya Genelleştirilmiş ödev denir. Amacı, DataMutant alanlarının değerlerini herhangi bir türdeki nesnenin karşılık gelen alanlarına atamaktır.

Misal. MObject'in Oluşturulması ve Kullanımı:

 // Data Mutant Nesnesi Oluşturun mobj = [ Metin -> 'Mutant'tan Merhaba' ]; // Ek Alanları Ayarla mobj{{Değil a yazım hatası|.}}Üst = 0; mobj{{Değil a yazım hatası|.}}Ayrıldı = 0; // Windows Form nesnesinin ilgili alanlarını ayarlayın // (Mutantik Atama) form := mobj;

Örnekler

Selam Dünya

 Mesaj Kutusu.Göstermek('Selam Dünya!');

Çıkış işlevi olmadan kabarcık sıralama

a=[17, 0, 5, 3,1, 2, 55];için (ben=0; ben < a.Uzunluk; ben=ben+1) için (j=ben+1; j <  a.Uzunluk; j=j+1)   Eğer (a[ben] > a[j] )   {     temp = a[ben];      a[ben] = a[j];     a[j] = temp;   }s = 'Sonuçlar:';için (ben=0; ben < a.Uzunluk; ben++)  s = s + ',' + a[ben];Mesaj Kutusu.Göstermek(s);

RSS Okuyucu

a = yeni XmlDocument();a.Yük('http://www.codeplex.com/scriptdotnet/Project/ProjectRss.aspx'); Mesaj Kutusu.Göstermek('CodePlex Script.NET RSS ::');her biri için (n içinde a.Düğümleri Seçin('/ rss / kanal / öğe / başlık'))  Mesaj Kutusu.Göstermek(n.İç Metin);

Yığın

20 öğeyle sınırlı yığın Sözleşmeli tasarım özellik

işlevi it(eşya)[// 10 öğeyle sınırla ön(ben mi{{Değil a yazım hatası|.}}Miktar < 10 );  İleti(); değişmez();]{ // ben mutasyona uğramış bir nesne,  // bu durumda yığın ben mi.it(eşya);}işlevi Pop()[// Boşluğu kontrol et hardik ön(ben mi{{Değil a yazım hatası|.}}Miktar > 0); İleti(); değişmez();]{ dönüş ben mi.Pop();}yığın = yeni Yığın<|int|>();// Mutant hardik'i oluştur// 1. İşlevleri Ayarla, yığını geçersiz kıl {{Yazım hatası değil |.}} İtmObject=[it->it,PopCheck->Pop];// 2. Nesneyi yakalamObject.Mutate(yığın);için (ben=0; ben<5; ben++)  mObject.it(ben);Konsol.Yazı çizgisi((dizi)mObject.PopCheck());

Ayrıca bakınız

  • L Sharp - .NET için Lisp benzeri betik dili
  • Boo - .NET platformu için Python benzeri bir dil
  • IronPython - .NET platformu için Python uygulaması, benzer Jython.
  • Nemerle - .NET platformu için yüksek seviyeli bir dil.

Dış bağlantılar