Script.NET
لغة Script.NET أو S# هي لغة برمجة وصفية توفر وظائف البرمجة النصية في تطبيقات Microsoft .NET ، مما يسمح بتنفيذ وظائف مخصصة أثناء التشغيل ، على غرار VBA في تطبيقات Microsoft Office . يشبه تركيب Script.NET تركيب JavaScript . صُممت لتكون لغة برمجة نصية بسيطة وفعالة تسمح بتخصيص تطبيقات .NET. تحتوي اللغة على مترجم فوري حقيقي، ويتم تنفيذها دون إنشاء تجميعات إضافية في الذاكرة.
Script.NET هو مشروع مفتوح المصدر.
ميزات البرمجة الوصفية
يحتوي Script.NET على عامل اقتباس خاص <[ program ]> يُعيد شجرة بناء الجملة المجردة (AST) لبرنامج مُحدد. بالإضافة إلى ذلك، يُمكن الوصول إلى شجرة بناء الجملة المجردة للبرنامج الحالي باستخدام كائن prog .
إليك مثال:
// إنشاء شجرة بناء جملة مجردة (AST) لـ MessageBox.Show('Hello')؛ program ast = <[MessageBox.Show( ' Hello ' ) ; ] > ; // إضافة شجرة البناء المجردة هذه في نهاية البرنامج الحالي prog.AppendAst ( ast );يسمح عامل التشغيل <[ ... ]> وكائنات prog لـ Script.NET بإنشاء نصوص برمجية جديدة أو تعديل النصوص البرمجية الموجودة في وقت التشغيل.
الكائنات المعممة
تتضمن Script.NET ما يُسمى "إطار عمل Mutantic" الذي يُقدم نوعًا خاصًا من الكائنات "الوصفية" للتحكم في الكائنات من أي نوع. ويتكون من مجموعة من الفئات، وعلى رأسها فئة "DataMutant". ويُطبق هذا الإطار عدة مبادئ للكائنات المتحولة.
تعريف
الكائن المتحول هو كائن خاص يمكن أن يمتلك جميع الخصائص (الحقول، والأساليب، وما إلى ذلك)، ويمكن تحويله إلى أي نوع (أو إسناده إلى كائن من أي نوع). وتخضع دلالات هذا التحويل (أو الإسناد) لشروط عملية.
يوجد عامل خاص := يُسمى التعيين المُعدَّل أو التعيين المُعمَّم. وظيفته هي تعيين قيم حقول DataMutant إلى الحقول المُقابلة لها في كائن من أي نوع.
مثال . إنشاء واستخدام كائن MObject:
// إنشاء كائن بيانات Mutant mobj = [ Text -> 'Hello from Mutant' ]; // تعيين الحقول الإضافية mobj {{ Not a typo | .}} Top = 0 ; mobj {{ Not a typo | .}} Left = 0 ; // تعيين الحقول المقابلة لكائن نموذج Windows // (تعيين Mutant) form := mobj ;أمثلة
مرحبا بالعالم
MessageBox.Show ( ' مرحباً!' ) ;فرز الفقاعات بدون دالة إخراج
a = [ 17 , 0 , 5 , 3 , 1 , 2 , 55 ] ; for ( i = 0 ; i < a.Length ; i = i + 1 ) for ( j = i + 1 ; j < a.Length ; j = j + 1 ) if ( a [ i ] > a [ j ] ) { temp = a [ i ] ; a [ i ] = a [ j ] ; a [ j ] = temp ; }s = 'النتائج:' ; for ( i = 0 ; i < a . Length ; i ++ ) s = s + ',' + a [ i ];MessageBox.Show ( s ) ;قارئ RSS
a = new XmlDocument ( ); a.Load ( ' http://www.codeplex.com/scriptdotnet/Project/ProjectRss.aspx' ); MessageBox.Show ( ' CodePlex Script.NET RSS::' ) ; foreach (n in a.SelectNodes ( ' / rss / channel / item / title ' ) ) MessageBox.Show ( n.InnerText ) ;كومة
يقتصر عدد العناصر في المجموعة على 20 عنصرًا باستخدام ميزة التصميم التعاقدي
دالة Push ( العنصر ) [ // الحد الأقصى 10 عناصر pre ( me {{ ليس خطأً مطبعياً | .}} العدد < 10 ); post (); invariant (); ] { // me هو كائن مُعدَّل، // مكدس في هذه الحالة me . Push ( العنصر ); }دالة Pop () [ // التحقق من الفراغ hardik pre ( me {{ ليس خطأً مطبعياً | .}} Count > 0 ); post (); invariant (); ] { return me.Pop ( ); }stack = new Stack <| int |> ();// إنشاء كائن متحول (Mutant hardik) // 1. تعيين الدوال، وتجاوز دالة stack {{ليس خطأً مطبعياً|.}}Push mObject = [ Push -> Push , PopCheck -> Pop ]; // 2. التقاط الكائن mObject . Mutate ( stack );for ( i = 0 ; i < 5 ; i ++ ) mObject . Push ( i );Console.WriteLine ( ( string ) mObject.PopCheck ( ) ) ;انظر أيضاً
- إل شارب - لغة برمجة نصية شبيهة بلغة ليسب لـ .NET
- Boo - لغة شبيهة بلغة بايثون لمنصة .NET
- IronPython - تطبيق للغة بايثون لمنصة .NET، على غرار Jython .
- Nemerle - لغة برمجة عالية المستوى لمنصة .NET.
روابط خارجية
- أحدث إصدار
- الصفحة الرئيسية لـ Script.NET
- أمثلة برمجية مؤرشفة بتاريخ 7 ديسمبر 2007 على موقع Wayback Machine
- لغات برمجة .NET
