/// <summary> /// Constructor. /// </summary> /// <param name="options">Options for the compiler.</param> public CompileAction(CompileOptions options, bool usedExternally = false) { Opcode.InitMachineCodeData(); CompiledObject.InitTypeData(); SafeSerializationMgr.CheckIDumperStatics(); _usedExternally = usedExternally; _options = options; _shared = new SafeSharedObjects(); _shared.FunctionManager = new FunctionManager(_shared); _shared.GameEventDispatchManager = new NoopGameEventDispatchManager(); _shared.Processor = new NoopProcessor(); _shared.ScriptHandler = new KSScript(); _shared.Screen = new Screen(); _shared.UpdateHandler = new UpdateHandler(); _shared.VolumeMgr = new VolumeManager(); _shared.FunctionManager.Load(); _compilerOptions = new CompilerOptions() { LoadProgramsInSameAddressSpace = false, IsCalledFromRun = false, FuncManager = _shared.FunctionManager }; _logger = new CompilerLogger(); _scriptLoader = new KerboscriptLoader(_shared.VolumeMgr as VolumeManager, _logger, _options); _scriptDeleter = new KerboscriptDeleter(_options); }
private void Run(string fileNameCommon) { try { Lexer grammarLexer = new Lexer(FileName); Console.WriteLine(MessagesHelper.InfoLexer); MiniJavaParser parser = new MiniJavaParser(grammarLexer.TokenStream); //Antlr.Runtime.Tree.CommonTree tree = parser.program().Tree; //Console.WriteLine(); //Console.WriteLine(tree.ToStringTree()); //Console.WriteLine(); //parser.Reset(); BaseSymbol symbol = parser.program().value; Console.WriteLine(MessagesHelper.InfoParser); //Console.WriteLine(symbol.ToStringTree()); if (parser.HasError) { Console.WriteLine(MessagesHelper.ErrorParser); Console.WriteLine(parser.ErrorMessage); Console.WriteLine(parser.ErrorPosition); HasError = true; } else { //Console.WriteLine(symbol.ToXmlTree()); grammarLexer.SaveToFile(string.Format("{0}{1}", fileNameCommon, LexerPostfix)); symbol.SaveToFile(string.Format("{0}{1}", fileNameCommon, ParserPostfix)); Console.WriteLine(MessagesHelper.InfoCompiler); try { ICompilerLogger logger = new CompilerLogger(string.Format("{0}{1}", fileNameCommon, CodegenPostfix)); string exeName = string.Format("{0}.exe", fileNameCommon); SharpCodeGen codeGen = new SharpCodeGen(symbol, exeName, logger); codeGen.GenerateCode(); logger.Save(); Console.WriteLine("{0}{1}{2}: [{3}]", MessagesHelper.SuccessCompiler, GrammarHelper.NewLineSymbol, MessagesHelper.Output, exeName); } catch (CodeGenerationException ex) { HasError = true; Console.WriteLine("{0}{1}{2}", MessagesHelper.ErrorCompiler, GrammarHelper.NewLineSymbol, ex.CompilerMessage); } } } catch (CompilerException ex) { Console.WriteLine("{0}{1}{2}", MessagesHelper.ErrorParser, GrammarHelper.NewLineSymbol, ex.CompilerMessage); } }
public static Response Compile(CompileRequest request) { var logger = new CompilerLogger(); logger.Verbosity = LoggerVerbosity.Detailed; var pc = new ProjectCollection(); var globalProperty = new Dictionary <string, string>(); globalProperty.Add("Configuration", request.Configuration ?? "Release"); //globalProperty.Add("Platform", "AnyCPU"); globalProperty.Add("VisualStudioVersion", "14.0"); if (!string.IsNullOrEmpty(request.OutputDirectory)) { globalProperty.Add("OutputDirectory", request.OutputDirectory); } if (!string.IsNullOrEmpty(request.SigningKey)) { globalProperty.Add("SignAssembly", "true"); globalProperty.Add("AssemblyOriginatorKeyFile", request.SigningKey); } if (!request.SkipCodeAnalysis) { globalProperty.Add("RunCodeAnalysis", "true"); globalProperty.Add("CodeAnalysisRuleSet", Path.Combine(BuilderAssemblyDirectory, "AllRules.ruleset")); globalProperty.Add("MBSBuilderPath", BuilderAssemblyDirectory); globalProperty.Add("CustomBeforeMicrosoftCSharpTargets", Path.Combine(BuilderAssemblyDirectory, "ImportStyleCop.targets")); } else { globalProperty.Add("RunCodeAnalysis", "false"); globalProperty.Add("CodeAnalysisRuleSet", string.Empty); } var buildRequest = new BuildRequestData(request.SolutionPath, globalProperty, "14.0", new [] { request.Target }, null); var parameters = new BuildParameters(pc); parameters.Loggers = new ILogger[] { logger }; parameters.DetailedSummary = true; var buildResult = BuildManager.DefaultBuildManager.Build(parameters, buildRequest); if (buildResult.OverallResult == BuildResultCode.Failure) { logger.Messages.Add(Message.CreateError("BuildResult is false")); } return(new Response(logger.Messages)); }
public static Response Compile(CompileRequest request) { var logger = new CompilerLogger(); logger.Verbosity = LoggerVerbosity.Detailed; var pc = new ProjectCollection(); var globalProperty = new Dictionary<string, string>(); globalProperty.Add("Configuration", request.Configuration ?? "Release"); //globalProperty.Add("Platform", "AnyCPU"); globalProperty.Add("VisualStudioVersion", "14.0"); if (!string.IsNullOrEmpty(request.OutputDirectory)) { globalProperty.Add("OutputDirectory", request.OutputDirectory); } if (!string.IsNullOrEmpty(request.SigningKey)) { globalProperty.Add("SignAssembly", "true"); globalProperty.Add("AssemblyOriginatorKeyFile", request.SigningKey); } if (!request.SkipCodeAnalysis) { globalProperty.Add("RunCodeAnalysis", "true"); globalProperty.Add("CodeAnalysisRuleSet", Path.Combine(BuilderAssemblyDirectory, "AllRules.ruleset")); globalProperty.Add("MBSBuilderPath", BuilderAssemblyDirectory); globalProperty.Add("CustomBeforeMicrosoftCSharpTargets", Path.Combine(BuilderAssemblyDirectory, "ImportStyleCop.targets")); } else { globalProperty.Add("RunCodeAnalysis", "false"); globalProperty.Add("CodeAnalysisRuleSet", string.Empty); } var buildRequest = new BuildRequestData(request.SolutionPath, globalProperty, "14.0", new [] { request.Target }, null); var parameters = new BuildParameters(pc); parameters.Loggers = new ILogger[] { logger }; parameters.DetailedSummary = true; var buildResult = BuildManager.DefaultBuildManager.Build(parameters, buildRequest); if (buildResult.OverallResult == BuildResultCode.Failure) { logger.Messages.Add(Message.CreateError("BuildResult is false")); } return new Response(logger.Messages); }
/// <summary> /// Constructor. /// </summary> /// <param name="volumeManager">Volume manager.</param> /// <param name="compilerOptions">Compiler ClI options.</param> /// <param name="deployOptions">Deployer ClI options.</param> /// <param name="logger">Compiler specific logger.</param> public KerboscriptLoader(VolumeManager volumeManager, CompilerLogger logger, CompileOptions compilerOptions) { _compilerOptions = compilerOptions; _volumeManager = volumeManager; _logger = logger; }