public override Runlet Weave(Runlet continuation, GlobalDictionary g) { for (int i = Body.Length - 1; i >= 0; i -= 1) { Codelet codelet = Body[i]; continuation = codelet.Weave(continuation, g); } return(continuation); }
public void Initialise(string key, Codelet value) { var halt = new HaltRunlet(); var unlock = new UnlockRunlet(halt); var pop = new PopGlobalRunlet(this._dictionary.Get(key), unlock); var init = value.Weave(pop, this._dictionary); Runlet currentInstruction = new LockRunlet(init); while (true) { currentInstruction = currentInstruction.ExecuteRunlet(this); } }
public void Bind(string idName, Codelet codelet) { this._dictionary.Add(idName, codelet.Weave(null, this._dictionary)); }