Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
        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);");
            }
        }
Exemplo n.º 6
0
        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));
        }
Exemplo n.º 7
0
        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;
        }