Exemple #1
0
 public override Runlet Weave(Runlet continuation, GlobalDictionary g)
 {
     if (this.Scope == "global")
     {
         Ident ident = g.Get(Name);
         if (this.Reftype == "get")
         {
             return(new PushIdentRunlet(ident, continuation));
         }
         else
         {
             throw new UnimplementedNutmegException();
         }
     }
     else if (this.Scope == "local" && this.Slot >= 0)
     {
         if (this.Reftype == "get")
         {
             return(new PushSlotRunlet(this.Slot, continuation));
         }
         else
         {
             throw new UnimplementedNutmegException();
         }
     }
     else
     {
         throw new UnimplementedNutmegException();
     }
 }
Exemple #2
0
 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);
 }
Exemple #3
0
 public override Runlet Weave(Runlet continuation, GlobalDictionary g)
 {
     if (long.TryParse(this.Value, out var n))
     {
         return(new PushQRunlet(n, continuation));
     }
     else
     {
         throw new Exception($"Invalid int value: {Value}");
     }
 }
Exemple #4
0
 public abstract Runlet Weave(Runlet continuation, GlobalDictionary g);
Exemple #5
0
 public override Runlet Weave(Runlet continuation, GlobalDictionary g)
 {
     return(new PushQRunlet(this.Value, continuation));
 }
Exemple #6
0
 public override Runlet Weave(Runlet continuation, GlobalDictionary g)
 {
     return(new LockRunlet(Arguments.Weave(_systemFunction(continuation), g)));
 }
Exemple #7
0
 public override Runlet Weave(Runlet continuation, GlobalDictionary g)
 {
     return(TestPart.Weave(new ForkRunlet(ThenPart.Weave(continuation, g), ElsePart.Weave(continuation, g)), g));
 }
Exemple #8
0
 public override Runlet Weave(Runlet continuation, GlobalDictionary g)
 {
     return(new LockRunlet(Arguments.Weave(Funarg.Weave(new CallSRunlet(continuation), g), g)));
 }
Exemple #9
0
 public override Runlet Weave(Runlet continuation, GlobalDictionary g)
 {
     return(new FunctionRunlet(Nargs, Nlocals, this.Body.Weave(new ReturnRunlet(), g), continuation));
 }