コード例 #1
0
ファイル: TypeInference.cs プロジェクト: d5j6/tntdoc_github
        public void CopyUnityScriptCompilerParametersTo(UnityScriptCompiler compiler)
        {
            var unityScriptCompilerParameters = (UnityScriptCompilerParameters)Parameters;

            compiler.Parameters.ScriptBaseType   = unityScriptCompilerParameters.ScriptBaseType;
            compiler.Parameters.ScriptMainMethod = unityScriptCompilerParameters.ScriptMainMethod;
            compiler.Parameters.References       = unityScriptCompilerParameters.References;
        }
コード例 #2
0
        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++;
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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");
        }
コード例 #5
0
        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"));
        }
コード例 #6
0
ファイル: TypeInference.cs プロジェクト: d5j6/tntdoc_github
        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);
        }