Script.NET
≈ 3 min read
Names in other languages
No names in other languages are held for this entry yet.
Article bodies are English and are not machine-translated. A name in another language is not a translation of the article.
Script.NET or S# is a metaprogramming language that provides scripting functionality in Microsoft .NET applications, allowing runtime execution of custom functionality, similar to VBA in Microsoft Office applications. The syntax of Script.NET is similar to JavaScript. It is designed to be simple and efficient scripting language allowing to customize .NET applications. The language has a true runtime interpreter, and it is executed without generating additional in-memory assemblies. Script.NET is an open-source project.
Script.NET or S# is a metaprogramming language that provides scripting functionality in Microsoft .NET applications, allowing runtime execution of custom functionality, similar to VBA in Microsoft Office applications. The syntax of Script.NET is similar to JavaScript. It is designed to be simple and efficient scripting language allowing to customize .NET applications. The language has a true runtime interpreter, and it is executed without generating additional in-memory assemblies. Script.NET is an open-source project. ==Metaprogramming features== Script.NET has a special quotation operator which returns the AST of a given program. Additionally, the AST of the current program may be accessed with the prog object. Here is an example: //Create an AST for MessageBox.Show('Hello'); program ast = ; //Add this AST at the end of the current program prog.AppendAst(ast); The operator and prog objects allow Script.NET to generate new scripts or modify existing scripts at runtime. ===Definition=== A Mutant is a special object which could have all properties (fields, methods, etc.), and may be converted to any type (or assigned to object of any type). The semantics of such conversion (or assignment) are pragmatically conditional. There is a special operator := called Mutantic or Generalized assignment. Its purpose is to assign values of DataMutant fields to corresponding fields of an object of any type. Example. Creation and Usage of MObject: // Create Data Mutant Object mobj = [ Text -> 'Hello from Mutant' ]; // Set Additional Fields mobj Top = 0; mobj Left = 0; // Set corresponding fields of Windows Form object // (Mutantic Assignment) form := mobj; ==Examples== ===Hello world=== MessageBox.Show('Hello!'); ===Bubble sort without output function=== a=[17, 0, 5, 3,1, 2, 55]; for (i=0; i a[j] ) { temp = a[i]; a[i] = a[j]; a[j] = temp; } s = 'Results:'; for (i=0; i ===RSS Reader=== 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); ===Stack=== Stack limited to 20 elements using Design by contract feature function Push(item) [ //Limit to 10 items pre(me Count 0); post(); invariant(); ] { return me.Pop(); } stack = new Stack (); //Create Mutant hardik //1. Set Functions, override stack Push mObject=[Push->Push,PopCheck->Pop]; //2. Capture object mObject.Mutate(stack); for (i=0; i ==See also== L Sharp - Lisp-like scripting language for .NET Boo - a Python Like language for .NET platform IronPython - an implementation of Python for the .NET platform, similar to Jython. Nemerle - a high-level language for the .NET platform. ==External links== Latest release Script.NET Homepage Code Examples
Text derived from https://en.wikipedia.org/w/index.php?oldid=1328481766 under CC BY-SA 4.0; modifications have been made.