public static bool Brainfuck(this string src, out string code, out string result) { var sb = new StringBuilder(); sb.AppendLine(@"var ptr = 0;"); sb.AppendLine(@"var buffer = new char[30000];"); sb.AppendLine(@"var sb = new StringBuilder();"); foreach (var c in src) { switch (c) { case '>': sb.AppendLine(@"++ptr;"); break; case '<': sb.AppendLine(@"--ptr;"); break; case '+': sb.AppendLine(@"buffer[ptr] = (char)(buffer[ptr] + 1);"); break; case '-': sb.AppendLine(@"buffer[ptr] = (char)(buffer[ptr] - 1);"); break; case '.': sb.AppendLine(@"sb.Append(buffer[ptr]);"); break; case ',': //not supported //sb.AppendLine(@"buffer[ptr] = (char)Console.Read();"); break; case '[': sb.AppendLine(@"while(buffer[ptr] != 0) {"); break; case ']': sb.AppendLine(@"}"); break; default: break; } } sb.AppendLine(@"sb.ToString();"); code = sb.ToString(); //run var engine = new ScriptEngine(); engine.ImportNamespace("System"); engine.ImportNamespace("System.Text"); var session = engine.CreateSession(); try { result = session.Execute<string>(code); } catch(Exception ex) { result = ex.ToString(); return false; } return true; }
public ChartScriptEngine() { engine = new ScriptEngine(); new[] { typeof(System.ComponentModel.Component).Assembly, typeof (int).Assembly, typeof (HttpContext).Assembly, typeof (Color).Assembly, typeof (Chart).Assembly, typeof (IEnumerable<>).Assembly, typeof (IQueryable).Assembly }.ToList().ForEach(asm => engine.AddReference(asm)); new[] { "System", "System.Web", "System.Drawing", "System.Linq", "System.Collections", "System.Collections.Generic", "System.Web.UI.DataVisualization.Charting" }.ToList().ForEach(ns => engine.ImportNamespace(ns)); }
public ScriptingHost(dynamic context) { // Create the script engine _engine = new ScriptEngine(); // Let us use engine’s Addreference for // adding some common assemblies new[] { typeof (Type).Assembly, typeof (ICollection).Assembly, typeof (ListDictionary).Assembly, typeof (Console).Assembly, typeof (ScriptingHost).Assembly, typeof (IEnumerable<>).Assembly, typeof (IQueryable).Assembly, typeof (DataSet).Assembly, GetType().Assembly }.ToList().ForEach(asm => _engine. AddReference(asm)); //Import common namespaces new[] { "System", "System.Linq", "System.Collections", "System.Collections.Generic" }.ToList().ForEach(ns => _engine. ImportNamespace(ns)); _session = _engine.CreateSession(context); }
public SecureRoslynWrapper() { new PermissionSet(PermissionState.Unrestricted).Assert(); Engine = new ScriptEngine(); foreach (var assembly in references) Engine.AddReference(assembly); foreach (var name in namespaces) Engine.ImportNamespace(name); Session = Engine.CreateSession(); CodeAccessPermission.RevertAssert(); }
static void Main(string[] args) { { var engine = new ScriptEngine(); var session = engine.CreateSession(); session.Execute(@"var a = 42;"); session.Execute(@"System.Console.WriteLine(a);"); } { // Interacting with host application var hostObject = new HostObject(); var engine = new ScriptEngine(); //Let us use engine's Addreference for adding the required assemblies new[] { typeof (Console).Assembly, typeof (HostObject).Assembly, typeof (IEnumerable<>).Assembly, typeof (IQueryable).Assembly }.ToList().ForEach(asm => engine.AddReference(asm)); new[] { "System", "System.Linq", "System.Collections", "System.Collections.Generic" }.ToList().ForEach(ns => engine.ImportNamespace(ns)); var session = engine.CreateSession(hostObject); session.Execute(@"Value = 156;"); session.Execute(@"System.Console.WriteLine(Value);"); } }
private void CreateEngine() { //Create the script engine //Script engine constructor parameters go changed _engine = new ScriptEngine(); //Let us use engine's Addreference for adding the required //assemblies new[] { typeof (Type).Assembly, typeof (ICollection).Assembly, typeof (ListDictionary).Assembly, typeof (Console).Assembly, typeof (ScriptingHost).Assembly, typeof (IEnumerable<>).Assembly, typeof (IQueryable).Assembly, //typeof (DbSet).Assembly, GetType().Assembly }.ToList().ForEach(asm => _engine.AddReference(asm)); new[] { "System", "System.Linq", "System.Collections", "System.Data.Entity", "System.Collections.Generic" }.ToList().ForEach(ns => _engine.ImportNamespace(ns)); }
private static Session CreateSession(Debugger currentDebugger,bool getOldSession) { //CSScript = script; //var s = new CommonScriptEngine(); if (getOldSession && Session != null) return Session; var asm = System.Reflection.Assembly.GetExecutingAssembly(); var csharpEngine = new ScriptEngine(null, null); //csharpEngine.AddReference("System.Diagnostics"); csharpEngine.ImportNamespace("System"); csharpEngine.ImportNamespace("System.Collections.Generic"); //csharpEngine.ImportNamespace("System.Linq"); csharpEngine.ImportNamespace("System.Text"); csharpEngine.ImportNamespace("System.IO"); //csharpEngine.ImportNamespace("System.Diagnostics"); csharpEngine.SetReferenceSearchPaths(asm.Location); csharpEngine.AddReference(typeof(System.Diagnostics.Debug).Assembly); csharpEngine.AddReference(typeof(System.Dynamic.DynamicObject).Assembly); csharpEngine.AddReference(asm); csharpEngine.ImportNamespace("ExtCS.Debugger"); Session = csharpEngine.CreateSession(currentDebugger); return Session; }