public IInterpetedOperation AssignOperation(IAssignOperation co) { if (backing.TryGetValue(co, out var res)) { return(res); } else { var op = new InterpetedAssignOperation(); backing.Add(co, op); op.Init( co.Left.Convert(this), co.Right.Convert(this)); return(op); } }
public IReadOnlyList <IMemberDefinition> AssignOperation(IAssignOperation co) { return(Walk(co.Operands)); }
private IInterpetedOperation <IInterpetedAnyType> AssignOperation <TLeft, TRight>(IAssignOperation co) where TRight : class, IInterpetedAnyType where TLeft : class, TRight { if (backing.TryGetValue(co, out var res)) { return(res); } else { var op = new InterpetedAssignOperation <TLeft, TRight>(); backing.Add(co, op); op.Init( co.Left.Convert(this).Cast <IInterpetedOperation <TLeft> >(), co.Right.Convert(this).Cast <IInterpetedOperation <TRight> >()); return(op); } }
public IInterpetedOperation <IInterpetedAnyType> AssignOperation(IAssignOperation co) { var method = GetMethod(new Type[] { TypeMap.MapType(co.Left.Returns()), TypeMap.MapType(co.Right.Returns()) }, nameof(AssignOperation)); return(method.Invoke(this, new object[] { co }).Cast <IInterpetedOperation <IInterpetedAnyType> >()); }
public Nothing AssignOperation(IAssignOperation co) { Push(co).Walk(co.Operands); return(new Nothing()); }
public Nothing AssignOperation(IAssignOperation co) { Walk(co.Operands, co); return(new Nothing()); }