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)); }
void OnEnable() { var settings = new CompilerSettings(); settings.AssemblyReferences.Add(typeof(Application).Assembly.FullName); settings.AssemblyReferences.Add(typeof(EditorApplication).Assembly.FullName); settings.AssemblyReferences.Add(typeof(SBUniverse).Assembly.FullName); var printer = new ConsoleReportPrinter(new UnityMessageReporter()); var context = new CompilerContext(settings, printer); evaluator = new Evaluator(context); }
static void Main(string[] args) { var settings = new CompilerSettings(); var printer = new ConsoleReportPrinter(); var eval = new Evaluator(new CompilerContext(settings, printer)); eval.ReferenceAssembly(typeof(Program).Assembly); eval.Run("using System;"); eval.Run("using managed;"); eval.Run("dynamic f = new Foo();"); eval.Run("f.Whatever;"); }
public CSharpEvaluator() { c = new CustomTextWriter(); c.InputErrorOnUsing += c_InputError; ReportPrinter r = new ConsoleReportPrinter(c); evaluator = new Evaluator(new CompilerContext( new CompilerSettings(), r)); evaluator.ReferenceAssembly(Assembly.GetExecutingAssembly()); evaluator.Run("using System;"); evaluator.Run("using ETLyteExe;"); }
internal MonoHotCompiler() { _writer = new StringWriter(); _reporter = new ConsoleReportPrinter(_writer); var context = new CompilerContext(new CompilerSettings { GenerateDebugInfo = false, WarningsAreErrors = false, LoadDefaultReferences = true, Optimize = true }, _reporter); _evaluator = new Evaluator(context); }
void Init() { // workaround to load DLR types before Evaluator would want them var r = Microsoft.CSharp.RuntimeBinder.Binder.IsEvent(Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags.BinaryOperationLogical, "gf", typeof(int)); var settings = new CompilerSettings(); var printer = new ConsoleReportPrinter(); eval = new Evaluator(new CompilerContext(settings, printer)); eval.ReferenceAssembly(typeof(REPL).Assembly); eval.Run("using System;"); eval.Run("using FOnline;"); eval.Run("using System.Collections.Generic;"); eval.Run("using System.Linq;"); statement = new StringBuilder(); }
// This method evaluates the given code and returns a CompilerOutput object public static CompilerOutput evaluateCode(string code) { CompilerOutput compilerOutput = new CompilerOutput(); /* * var compilerContext = new CompilerContext(new CompilerSettings(), new ConsoleReportPrinter()); * * var evaluator = new Evaluator(compilerContext); */ var reportWriter = new StringWriter(); var settings = new CompilerSettings(); var printer = new ConsoleReportPrinter(reportWriter); var compilerContext = new CompilerContext(settings, printer); var reports = new Report(compilerContext, printer); var evaluator = new Evaluator(compilerContext); var myString = ""; originalConsoleOut_global = Console.Out; // preserve the original stream using (var writer = new StringWriter()) { Console.SetOut(writer); evaluator.Run(code); evaluator.Run("MainClass m1 = new MainClass(); m1.Main();"); //bConsole.WriteLine ("after executing code"); if (reports.Errors > 0) { Console.WriteLine("reportWriter.ToString: \n" + reportWriter.ToString()); compilerOutput.errors = reportWriter.ToString(); } writer.Flush(); // make sure everything is written out of consule myString = writer.GetStringBuilder().ToString(); compilerOutput.consoleOut = myString; } Console.SetOut(originalConsoleOut_global); // restore Console.Out return(compilerOutput); }
private static Evaluator InitEvaluator(Type type) { var settings = new CompilerSettings(); var printer = new ConsoleReportPrinter(); var context = new CompilerContext(settings, printer); var evaluator = new Evaluator(context) { InteractiveBaseClass = type }; evaluator.ReferenceAssembly(type.Assembly); evaluator.ReferenceAssembly(typeof(Log).Assembly); evaluator.Run("using System;"); evaluator.Run("using System.Linq;"); evaluator.Run("using Kudu.Logging;"); return(evaluator); }
public void InitEval() { var settings = new CompilerSettings(); foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { if (assembly == null || assembly.FullName.Contains("GeneratedCode") || assembly.FullName.Contains("eval-")) { continue; } Debug.Log($"Adding {assembly.FullName}"); settings.AssemblyReferences.Add(assembly.FullName); } printer = new ConsoleReportPrinter(new StringWriter(errInfo)); var context = new CompilerContext(settings, printer); CsharpEval = new Evaluator(context); CsharpEval.Run("using UnityEngine; using System; using System.Collections.Generic;"); }
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)); }
public static int Main(string[] args) { bool help = false; int? pid = null; var options = new OptionSet() { "logcat-parse: Parse `adb logcat` output to analyze GREF information.", "", "usage: logcat-parse [-p PID] FILE [@RESPONSE-FILES]", { "p|pid=", "The {PID} to filter GREF output.", v => pid = int.Parse(v, CultureInfo.InvariantCulture) }, { "h|?|help", "Show this message and exit.", v => help = v != null }, new ResponseFileSource(), }; var files = options.Parse(args); if (help) { options.WriteOptionDescriptions(Console.Out); return(0); } Console.WriteLine("// `adb logcat` GREF parsing utility"); Console.WriteLine("//"); Console.WriteLine("// Use `Grefs.Parse(stream)` to parse a file containing `adb logcat` output."); Console.WriteLine("// Grefs.AllocatedPeers contains all exposed Java.Lang.Object instances."); Console.WriteLine("// Grefs.AlivePeers contains those still alive by the end of parsing."); var settings = new CompilerSettings() { Unsafe = true }; var printer = new ConsoleReportPrinter(); var eval = new Evaluator(new CompilerContext(settings, printer)); eval.ReferenceAssembly(typeof(Program).Assembly); eval.Run("using Xamarin.Android.Tools.LogcatParse;"); if (files.Count > 0) { if (files.Count > 1) { Console.Error.WriteLine("logcat-parse: More than one file is unsupported. Loading: {0}", files [0]); } Console.WriteLine("var grefs = Grefs.Parse(\"{0}\"{1});", files [0], pid.HasValue ? ", " + pid.Value : ""); eval.Run("Grefs grefs;"); eval.Run( "using (var __source = new System.IO.StreamReader(\"" + files [0] + "\")) grefs = Grefs.Parse(__source" + (pid.HasValue ? (", " + pid.ToString()) : "") + ");"); } eval.InteractiveBaseClass = typeof(Mono.InteractiveBaseShell); eval.DescribeTypeExpressions = true; eval.WaitOnTask = true; var shell = new Mono.CSharpShell(eval); return(shell.Run(new string[0])); }
/// <summary> /// Сконфигурировать чекер. /// </summary> /// <param name="checker">Чекер.</param> public static void Configure(this ICodeChecker checker) { var section = (AgentConfigurationSection)ConfigurationManager.GetSection("agent"); log.Trace("Загрузка контекста приложения"); var applicationContextFactory = new ApplicationContextFactory(); checker.ContextManager.Load(applicationContextFactory); log.Trace("Загрузка контекста разработки"); var developmentContextFactory = new DevelopmentContextFactory(); foreach (ContextProviderElement element in section.ContextProviders) { switch (element.Provider) { case ContextProviderType.Package: log.Trace($"Найден загрузчик контекста из пакета {element.FilePath}"); var packageProvider = new PackageProvider(element.FilePath); developmentContextFactory.Providers.Add(packageProvider); break; case ContextProviderType.Database: log.Trace($"Найден загрузчик контекста из базы данных {element.ConnectionString}"); var databaseProvider = new DatabaseProvider(element.ConnectionString); developmentContextFactory.Providers.Add(databaseProvider); break; case ContextProviderType.Folder: log.Trace($"Найден загрузчик контекста из папки {element.FolderPath}"); var folderProvider = new FolderProvider(element.FolderPath); developmentContextFactory.Providers.Add(folderProvider); break; } } checker.ContextManager.Load(developmentContextFactory); log.Trace("Загрузка сборок с правилами анализа"); if (!string.IsNullOrEmpty(section.RuleLibraryPath)) { checker.RuleManager.LoadLibraries(section.RuleLibraryPath); } log.Trace("Загрузка генераторов отчетов"); if (section.ReportPrinters != null) { foreach (ReportPrinterElement element in section.ReportPrinters) { switch (element.Printer) { case ReportPrinterType.Console: var consoleReportPrinter = new ConsoleReportPrinter(); checker.ReportManager.Printers.Add(consoleReportPrinter); break; case ReportPrinterType.CSV: var csvReportPrinter = new CsvReportPrinter(element.FilePath); checker.ReportManager.Printers.Add(csvReportPrinter); break; } } } }