private bool Compile(string code, out int blockId) { //ProtoCore.CompileTime.Context staticContext = new ProtoCore.CompileTime.Context(code, new Dictionary<string, object>(), graphCompiler.ExecutionFlagList); staticContext.SetData(code, new Dictionary <string, object>(), graphCompiler.ExecutionFlagList); bool succeeded = runner.Compile(staticContext, runnerCore, out blockId); if (succeeded) { // Regenerate the DS executable runnerCore.GenerateExecutable(); // Update the symbol tables // TODO Jun: Expand to accomoadate the list of symbols staticContext.symbolTable = runnerCore.DSExecutable.runtimeSymbols[0]; } return(succeeded); }
private ProtoLanguage.CompileStateTracker Compile(string code, out int blockId) { staticContext.SetData(code, new Dictionary <string, object>(), graphCompiler.ExecutionFlagList); compileState = runner.Compile(staticContext, runnerCore, out blockId); Validity.Assert(null != compileState); if (compileState.compileSucceeded) { // This is the boundary between compilestate and runtime core // Generate the executable compileState.GenerateExecutable(); // Get the executable from the compileState runnerCore.DSExecutable = compileState.DSExecutable; // Update the symbol tables // TODO Jun: Expand to accomoadate the list of symbols staticContext.symbolTable = runnerCore.DSExecutable.runtimeSymbols[0]; } return(compileState); }