public static CmdLineCompilerContext Create(string sourcePath, CompilationFlags flags)
        {
            string   outputFile;
            IEmitter emitter;

            if (flags.HasFlag(CompilationFlags.Assembly))
            {
                outputFile = Path.ChangeExtension(sourcePath, "il");
                emitter    = new TextEmitter(outputFile);
            }
            else if (flags.HasFlag(CompilationFlags.WriteDll))
            {
                outputFile = Path.ChangeExtension(sourcePath, "dll");
                emitter    = new PeEmitter(outputFile, flags);
            }
            else
            {
                outputFile = Path.ChangeExtension(sourcePath, "exe");
                emitter    = new PeEmitter(outputFile, flags);
            }

            Stream       inputFile = File.Open(sourcePath, FileMode.Open, FileAccess.Read);
            StreamReader reader    = new StreamReader(inputFile);

            return(new CmdLineCompilerContext(sourcePath, inputFile, reader, emitter, flags));
        }
Esempio n. 2
0
        public static TestCompilerContext Create(string compiland, GlobalSymbolList globals, CompilationFlags flags)
        {
            byte[]       buffer  = Encoding.Default.GetBytes(compiland);
            MemoryStream input   = new MemoryStream(buffer);
            StreamReader reader  = new StreamReader(input);
            MemoryStream output  = new MemoryStream();
            TextEmitter  emitter = new TextEmitter(output);

            TestCompilerContext testContext = new TestCompilerContext(input, reader, output, emitter, flags);

            if (globals != null)
            {
                foreach (var symbol in globals.Items)
                {
                    testContext.SymbolTable.Add(symbol.Item1, symbol.Item2, StorageClass.Global, null);
                }
            }

            return(testContext);
        }
 private void Awake()
 {
     textEmitter = FindObjectOfType <TextEmitter>();
     health      = GetComponent <Health>();
     armor       = GetComponent <Armor>();
 }