Example #1
0
File: repl.cs Project: nestalk/mono
		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);
		}
Example #2
0
        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);
        }
Example #3
0
        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
        }
Example #5
0
        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));
        }
Example #6
0
File: repl.cs Project: GirlD/mono
		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);
		}
Example #7
0
File: repl.cs Project: saga/mono
		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);
		}
Example #8
0
        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);
                }
            }
        }
Example #9
0
        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));
        }