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)); }
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>(); }