static int Main (string [] args) { var cmd = new CommandLineParser (Console.Out); cmd.UnknownOptionHandler += HandleExtraArguments; var settings = cmd.ParseArguments (args); if (settings == null) return 1; var startup_files = new string [settings.SourceFiles.Count]; int i = 0; foreach (var source in settings.SourceFiles) startup_files [i++] = source.FullPathName; settings.SourceFiles.Clear (); var eval = new Evaluator (new CompilerContext (settings, new ConsoleReportPrinter ())); eval.InteractiveBaseClass = typeof (InteractiveBaseShell); eval.DescribeTypeExpressions = true; CSharpShell shell; #if !ON_DOTNET if (attach.HasValue) { shell = new ClientCSharpShell (eval, attach.Value); } else if (agent != null) { new CSharpAgent (eval, agent).Run (startup_files); return 0; } else #endif { shell = new CSharpShell (eval); } return shell.Run (startup_files); }
public int Run() { // Enable unsafe code by default var settings = new CompilerSettings () { Unsafe = true }; var startup_files = new string [0]; settings.SourceFiles.Clear (); ReportPrinter printer= new ConsoleReportPrinter (); var eval = new Evaluator (new CompilerContext (settings, printer)); eval.InteractiveBaseClass = typeof (InteractiveBaseShell); eval.DescribeTypeExpressions = true; eval.WaitOnTask = true; CSharpShell shell; #if !ON_DOTNET if (attach.HasValue) { shell = new ClientCSharpShell (eval, attach.Value); } else if (agent != null) { new CSharpAgent (eval, agent, agent_stderr).Run (startup_files); return 0; } else #endif { shell = new CSharpShell (eval, console); } return shell.Run (startup_files); }
static int Main(string [] args) { var cmd = new CommandLineParser(Console.Out); cmd.UnknownOptionHandler += HandleExtraArguments; var settings = cmd.ParseArguments(args); if (settings == null) { return(1); } var startup_files = new string [settings.SourceFiles.Count]; int i = 0; foreach (var source in settings.SourceFiles) { startup_files [i++] = source.FullPathName; } settings.SourceFiles.Clear(); TextWriter agent_stderr = null; ReportPrinter printer; if (agent != null) { agent_stderr = new StringWriter(); printer = new StreamReportPrinter(agent_stderr); } else { printer = new ConsoleReportPrinter(); } var eval = new Evaluator(new CompilerContext(settings, printer)); eval.InteractiveBaseClass = typeof(InteractiveBaseShell); eval.DescribeTypeExpressions = true; CSharpShell shell; #if !ON_DOTNET if (attach.HasValue) { shell = new ClientCSharpShell(eval, attach.Value); } else if (agent != null) { new CSharpAgent(eval, agent, agent_stderr).Run(startup_files); return(0); } else #endif { shell = new CSharpShell(eval); } return(shell.Run(startup_files)); }
public static void Main(String[] myArgs) { _Compiler = new Runner(); //var a = _Compiler.Execute("Math.Abs(-42);"); //Assert.AreEqual(42, a); //var b = _Compiler.Execute("class Fact { public int Run(int n) { return n <= 0 ? 1 : n*Run(n-1); } }"); //var c = _Compiler.Execute("new Fact().Run(5);"); //Assert.AreEqual(120, c); //var d = _Compiler.Execute("\"abcdefgh\".Substring(1, 2);"); //Assert.AreEqual("bc", d); //var e = _Compiler.Execute("var test = 123;"); //Assert.AreEqual("bc", e); #region Feel free to step through... _Compiler = new Runner(); var a = _Compiler.Execute("Math.Abs(-42);"); var b = _Compiler.Execute("Math.Sin(Math.PI / 6);"); var c = _Compiler.Execute("class Fact { public int Run(int n) { return n <= 0 ? 1 : n*Run(n-1); } }"); var d = _Compiler.Execute("new Fact().Run(5);"); var e = _Compiler.Execute("\"abcdefgh\".Substring(1, 2);"); var f = _Compiler.Execute("class Echo { public Object Print(Object o) { return o; } }"); var g = _Compiler.Execute("var test = 123;"); var h = _Compiler.Execute("new Echo().Print(test);"); #endregion #region Start the interactive (read-eval-print loop) shell... var _Report = new Report(new ConsoleReportPrinter()); var _CLP = new CommandLineParser(_Report); _CLP.UnknownOptionHandler += Mono.Driver.HandleExtraArguments; var _Settings = _CLP.ParseArguments(myArgs); if (_Settings == null || _Report.Errors > 0) Environment.Exit(1); var _Evaluator = new Evaluator(_Settings, _Report) { InteractiveBaseClass = typeof(InteractiveBaseShell), DescribeTypeExpressions = true }; //// Adding a assembly twice will lead to delayed errors... //_Evaluator.ReferenceAssembly(typeof(YourAssembly).Assembly); var _CSharpShell = new CSharpShell(_Evaluator).Run(); #endregion }
static int Main(string [] args) { var r = new Report(new ConsoleReportPrinter()); var cmd = new CommandLineParser(r); cmd.UnknownOptionHandler += HandleExtraArguments; var settings = cmd.ParseArguments(args); if (settings == null || r.Errors > 0) { return(1); } var eval = new Evaluator(settings, r); eval.InteractiveBaseClass = typeof(InteractiveBaseShell); eval.DescribeTypeExpressions = true; string[] startup_files = { }; /* * try { * startup_files = Evaluator.InitAndGetStartupFiles (args, HandleExtraArguments); * Evaluator.DescribeTypeExpressions = true; * Evaluator.SetInteractiveBaseClass (typeof (InteractiveBaseShell)); * } catch { * return 1; * } */ CSharpShell shell; #if !ON_DOTNET if (attach.HasValue) { shell = new ClientCSharpShell(eval, attach.Value); } else if (agent != null) { new CSharpAgent(eval, agent).Run(startup_files); return(0); } else #endif { shell = new CSharpShell(eval); } return(shell.Run(startup_files)); }
static int Main (string [] args) { var cmd = new CommandLineParser (Console.Out); cmd.UnknownOptionHandler += HandleExtraArguments; // Enable unsafe code by default var settings = new CompilerSettings () { Unsafe = true }; if (!cmd.ParseArguments (settings, args)) return 1; var startup_files = new string [settings.SourceFiles.Count]; int i = 0; foreach (var source in settings.SourceFiles) startup_files [i++] = source.FullPathName; settings.SourceFiles.Clear (); TextWriter agent_stderr = null; ReportPrinter printer; if (agent != null) { agent_stderr = new StringWriter (); printer = new StreamReportPrinter (agent_stderr); } else { printer = new ConsoleReportPrinter (); } var eval = new Evaluator (new CompilerContext (settings, printer)); eval.InteractiveBaseClass = typeof (InteractiveBaseShell); eval.DescribeTypeExpressions = true; eval.WaitOnTask = true; CSharpShell shell; #if !ON_DOTNET if (attach.HasValue) { shell = new ClientCSharpShell (eval, attach.Value); } else if (agent != null) { new CSharpAgent (eval, agent, agent_stderr).Run (startup_files); return 0; } else #endif { shell = new CSharpShell (eval); } return shell.Run (startup_files); }
static int Main (string [] args) { var r = new Report (new ConsoleReportPrinter ()); var cmd = new CommandLineParser (r); cmd.UnknownOptionHandler += HandleExtraArguments; var settings = cmd.ParseArguments (args); if (settings == null || r.Errors > 0) return 1; var eval = new Evaluator (settings, r); eval.InteractiveBaseClass = typeof (InteractiveBaseShell); eval.DescribeTypeExpressions = true; string[] startup_files = { }; /* try { startup_files = Evaluator.InitAndGetStartupFiles (args, HandleExtraArguments); Evaluator.DescribeTypeExpressions = true; Evaluator.SetInteractiveBaseClass (typeof (InteractiveBaseShell)); } catch { return 1; } */ CSharpShell shell; #if !ON_DOTNET if (attach.HasValue) { shell = new ClientCSharpShell (eval, attach.Value); } else if (agent != null) { new CSharpAgent (eval, agent).Run (startup_files); return 0; } else #endif { shell = new CSharpShell (eval); } return shell.Run (startup_files); }
public void RunRepl(NetworkStream s) { string input = null; while (!InteractiveBase.QuitRequested) { try { string error_string; StringWriter error_output = new StringWriter(); // Report.Stderr = error_output; string line = s.GetString(); bool result_set; object result; if (input == null) { input = line; } else { input = input + "\n" + line; } try { input = evaluator.Evaluate(input, out result, out result_set); } catch (Exception e) { s.WriteByte((byte)AgentStatus.ERROR); s.WriteString(e.ToString()); s.WriteByte((byte)AgentStatus.RESULT_NOT_SET); continue; } if (input != null) { s.WriteByte((byte)AgentStatus.PARTIAL_INPUT); continue; } // Send warnings and errors back error_string = error_output.ToString(); if (error_string.Length != 0) { s.WriteByte((byte)AgentStatus.ERROR); s.WriteString(error_output.ToString()); } if (result_set) { s.WriteByte((byte)AgentStatus.RESULT_SET); StringWriter sr = new StringWriter(); CSharpShell.PrettyPrint(sr, result); s.WriteString(sr.ToString()); } else { s.WriteByte((byte)AgentStatus.RESULT_NOT_SET); } } catch (IOException) { break; } catch (Exception e) { Console.WriteLine(e); } } }
static int Main(string [] args) { if (!SplitDriverAndScriptArguments(ref args, out script_args)) { return(1); } var cmd = new CommandLineParser(Console.Out); cmd.UnknownOptionHandler += HandleExtraArguments; // Enable unsafe code by default var settings = new CompilerSettings() { Unsafe = true }; if (!cmd.ParseArguments(settings, args)) { return(1); } var startup_files = new string [settings.SourceFiles.Count]; int i = 0; foreach (var source in settings.SourceFiles) { startup_files [i++] = source.OriginalFullPathName; } settings.SourceFiles.Clear(); TextWriter agent_stderr = null; ReportPrinter printer; if (agent != null) { agent_stderr = new StringWriter(); printer = new StreamReportPrinter(agent_stderr); } else { printer = new ConsoleReportPrinter(); } var eval = new Evaluator(new CompilerContext(settings, printer)); eval.InteractiveBaseClass = typeof(InteractiveBaseShell); eval.DescribeTypeExpressions = true; eval.WaitOnTask = true; CSharpShell shell; #if !ON_DOTNET if (attach.HasValue) { shell = new ClientCSharpShell_v1(eval, attach.Value); } else if (agent != null) { new CSharpAgent(eval, agent, agent_stderr).Run(startup_files); return(0); } else #endif if (target_host != null) { shell = new ClientCSharpShell(eval, target_host, target_port); } else { shell = new CSharpShell(eval); } return(shell.Run(startup_files)); }