public void CopyUnityScriptCompilerParametersTo(UnityScriptCompiler compiler) { var unityScriptCompilerParameters = (UnityScriptCompilerParameters)Parameters; compiler.Parameters.ScriptBaseType = unityScriptCompilerParameters.ScriptBaseType; compiler.Parameters.ScriptMainMethod = unityScriptCompilerParameters.ScriptMainMethod; compiler.Parameters.References = unityScriptCompilerParameters.References; }
private void AddEvaluationContextReferencesTo(UnityScriptCompiler compiler) { int index = 0; Assembly[] assemblyReferences = this._context.ScriptContainer.GetAssemblyReferences(); int length = assemblyReferences.Length; while (index < length) { compiler.Parameters.References.Add(assemblyReferences[index]); index++; } }
internal UnityScriptCompiler CreatAndInitializeCompiler(IEnumerable <SourceFile> inputs, IEnumerable <string> definedSymbols, IEnumerable <string> referencedAssemblies, IDictionary <string, IList <Comment> > comments) { _compiler = new UnityScriptCompiler(); _compiler.Parameters.TabSize = 4; SetupCompilerParameters(definedSymbols, referencedAssemblies); SetupCompilerPipeline(comments); foreach (var input in inputs) { _compiler.Parameters.Input.Add(new StringInput(input.FileName, input.Contents)); } return(_compiler); }
public UnityScriptConverter() { _compiler = new UnityScriptCompiler(); CompilerPipeline compilerPipeline = UnityScriptCompiler.Pipelines.RawParsing(); compilerPipeline.Add(new ResolveMonoBehaviourType()); compilerPipeline.Add(new ApplySemantics()); compilerPipeline.Add(new ApplyDefaultVisibility()); compilerPipeline.Add(new TypeInference()); compilerPipeline.Add(new FixScriptClass()); compilerPipeline.Add(new RemoveEmptyMethods()); compilerPipeline.Add(new AddImports()); compilerPipeline.Add(new RenameArrayDeclaration()); compilerPipeline.Add(new RenameIEnumerator()); compilerPipeline.Add(new TransformKnownCalls()); compilerPipeline.Add(new GenericTransformer()); _compiler.Parameters.ScriptMainMethod = "Example"; _compiler.Parameters.Pipeline = compilerPipeline; var imports = _compiler.Parameters.Imports; imports.Add("UnityEngine"); imports.Add("System.Collections"); }
private Type DoCompile() { UnityScriptCompiler compiler = new UnityScriptCompiler { Parameters = { Pipeline = AdjustPipeline(this._context, UnityScriptCompiler.Pipelines.CompileToMemory()), ScriptBaseType = typeof(EvaluationScript), GlobalVariablesBecomeFields = false, ScriptMainMethod = "Run" } }; compiler.Parameters.Input.Add(new StringInput("script", this._code + ";")); compiler.Parameters.Debug = false; compiler.Parameters.GenerateInMemory = true; this.AddEvaluationContextReferencesTo(compiler); this._compilationResult = compiler.Run(); if (this._compilationResult.Errors.Count != 0) { throw new CompilationErrorsException(this._compilationResult.Errors); } return(this._compilationResult.GeneratedAssembly.GetType("script")); }
public CompileUnit SetUpTypeInferenceSource() { CompilerPipeline compilerPipeline = UnityScriptCompiler.Pipelines.AdjustBooPipeline(new ResolveExpressions()); compilerPipeline.RemoveAt(compilerPipeline.Find(typeof(ApplySemantics))); compilerPipeline.BreakOnErrors = false; var unityScriptCompiler = new UnityScriptCompiler(new UnityScriptCompilerParameters(My <IReflectionTypeSystemProvider> .Instance, false)); CopyUnityScriptCompilerParametersTo(unityScriptCompiler); unityScriptCompiler.Parameters.Pipeline = compilerPipeline; unityScriptCompiler.Parameters.AddToEnvironment( typeof(TypeInferenceRuleProvider), GetCustomTypeInferenceRuleProvider); var compilerContext = unityScriptCompiler.Run(CompileUnit.CloneNode()); if (((ICollection)compilerContext.Errors).Count != 0) { throw new CompilationErrorsException(compilerContext.Errors); } return(compilerContext.CompileUnit); }