//public object Evaluate(string initializerCode) //{ // object result; // if (this.Evaluate(initializerCode, null, out result)) // return result; // return null; //} //public object Evaluate(TextReader initializerCode) //{ // object result; // if (this.Evaluate(initializerCode, null, out result)) // return result; // return null; //} //public bool Evaluate(string initializerCode, IParseErrorSink errorSink, out object result) //{ // if (initializerCode == null) // throw new ArgumentNullException("initializerCode"); // return this.Evaluate(new StringReader(initializerCode), errorSink, out result); //} //public bool Evaluate(TextReader initializerCode, IParseErrorSink errorSink, out object result) //{ // if (initializerCode == null) // throw new ArgumentNullException("initializerCode"); // result = null; // Parser parser = new Parser(); // parser.ErrorSink = errorSink; // InitializerNode node = parser.ParseInitializer(initializerCode); // if ((node == null) || !node.Accept(ParseTreeValidatingVisitor.Current)) // return false; // Expression<Func<SmalltalkRuntime, object, object>> lambda; // RuntimeProgramInitializer code = new RuntimeProgramInitializer(node, null); // var compilationResult = code.Compile(this.Runtime); // if (compilationResult == null) // return false; // lambda = compilationResult.ExecutableCode; // if (lambda == null) // return false; // var function = lambda.Compile(); // result = function(this.Runtime, null); // return true; //} private void CompleteInstall(InterchangeInstallerContext installer) { installer.ErrorSink = new InstallErrorSink(); installer.InstallMetaAnnotations = this.InstallMetaAnnotations; if (installer.Install()) { ExecutionContext executionContext = new ExecutionContext(this.Runtime); installer.NameScope.ExecuteInitializers(executionContext); } }
public void Install(IEnumerable <FileInInformation> fileIns) { if (fileIns == null) { throw new ArgumentNullException("fileIns"); } InterchangeInstallerContext context = this.Read(fileIns); this.CompleteInstall(context); }
public InterchangeInstallerContext Read(IEnumerable <FileInInformation> fileIns) { if (fileIns == null) { throw new ArgumentNullException("fileIns"); } InterchangeInstallerContext installer = this.CreateInstallerContext(); foreach (FileInInformation info in fileIns) { using (TextReader souceCodeReader = info.GetTextReader()) { InterchangeFormatProcessor processor = new InterchangeFormatProcessor(info, souceCodeReader, installer, this.VersionServicesMap); processor.ProcessInterchangeFile(); } } return(installer); }