internal static IInterpetedImplementation Implementation(InterpetedMemberDefinition parameterDefinition, InterpetedMemberDefinition contextDefinition, IInterpetedOperation[] body, InterpetedContext context, IInterpetedScopeTemplate scope, IMethodType implementationType) => Root(new Func <IRunTimeAnyRoot, RunTimeAnyRootEntry>[] { InterpetedImplementationIntention(parameterDefinition, contextDefinition, body, context, scope, implementationType) }).Has <IInterpetedImplementation>();
internal static Func <IRunTimeAnyRoot, RunTimeAnyRootEntry> InterpetedMethodIntention( InterpetedMemberDefinition parameterDefinition, IInterpetedOperation[] body, InterpetedContext context, IInterpetedScopeTemplate scope, IMethodType methodType) => root => { var item = new InterpetedMethod(parameterDefinition, body, context, scope, methodType, root); return(new RunTimeAnyRootEntry(item, methodType)); };
public override IInterpetedResult <IInterpetedMember> Interpet(InterpetedContext interpetedContext) { var argumentResult = Argument.Interpet(interpetedContext); if (argumentResult.IsReturn(out var argumentReturned, out var argumentValue)) { return(InterpetedResult.Return <IInterpetedMember>(argumentReturned !)); } return(InterpetedResult.Return <IInterpetedMember>(argumentValue !)); }
public InterpetedMethod( InterpetedMemberDefinition parameterDefinition, IInterpetedOperation[] body, InterpetedContext context, IInterpetedScopeTemplate scope, IMethodType methodType, IRunTimeAnyRoot root) : base(root) { ParameterDefinition = parameterDefinition ?? throw new System.ArgumentNullException(nameof(parameterDefinition)); Body = body ?? throw new System.ArgumentNullException(nameof(body)); Context = context ?? throw new System.ArgumentNullException(nameof(context)); Scope = scope ?? throw new System.ArgumentNullException(nameof(scope)); MethodType = methodType ?? throw new ArgumentNullException(nameof(methodType)); }
public InterpetedImplementation( InterpetedMemberDefinition parameterDefinition, InterpetedMemberDefinition contextDefinition, IInterpetedOperation[] body, InterpetedContext context, IInterpetedScopeTemplate scope, IMethodType implementationType, IRunTimeAnyRoot root) : base(root) { ParameterDefinition = parameterDefinition ?? throw new ArgumentNullException(nameof(parameterDefinition)); this.contextDefinition = contextDefinition ?? throw new ArgumentNullException(nameof(contextDefinition)); Body = body ?? throw new ArgumentNullException(nameof(body)); InterpetedContext = context ?? throw new ArgumentNullException(nameof(context)); Scope = scope ?? throw new ArgumentNullException(nameof(scope)); ImplementationType = implementationType ?? throw new ArgumentNullException(nameof(implementationType)); }
public override IInterpetedResult <IInterpetedMember> Interpet(InterpetedContext interpetedContext) { var leftResult = Left.Interpet(interpetedContext); if (leftResult.IsReturn(out var leftReturned, out var leftValue)) { return(InterpetedResult.Return <IInterpetedMember>(leftReturned !)); } var rightResult = Right.Interpet(interpetedContext); if (rightResult.IsReturn(out var rightReturned, out var rightValue)) { return(InterpetedResult.Return <IInterpetedMember>(rightReturned !)); } return(InterpetedResult.Create(TypeManager.NumberMember(TypeManager.Double( leftValue !.Value.Has <IBoxedDouble>().Value * rightValue !.Value.Has <IBoxedDouble>().Value)))); }
public override IInterpetedResult <IInterpetedMember> Interpet(InterpetedContext interpetedContext) { var leftResult = Left.Interpet(interpetedContext); if (leftResult.IsReturn(out var leftReturned, out var leftValue)) { return(InterpetedResult.Return <IInterpetedMember>(leftReturned !)); } var rightResult = Right.Interpet(interpetedContext); if (rightResult.IsReturn(out var rightReturned, out var rightValue)) { return(InterpetedResult.Return <IInterpetedMember>(rightReturned !)); } rightValue.CastTo <IInterpetedMemberSet>().Set(leftValue !.Value); return(InterpetedResult.Create(leftValue)); }
public override IInterpetedResult <IInterpetedMember> Interpet(InterpetedContext interpetedContext) { var leftResult = Left.Interpet(interpetedContext); if (leftResult.IsReturn(out var leftReturned, out var leftValue)) { return(InterpetedResult.Return <IInterpetedMember>(leftReturned !)); } if (leftValue !.Value.Has <IBoxedBool>().Value) { return(InterpetedResult.Create(TypeManager.BoolMember(TypeManager.Bool(false)))); } var rightResult = Right.Interpet(interpetedContext); if (rightResult.IsReturn(out var rightReturned, out var _)) { return(InterpetedResult.Return <IInterpetedMember>(rightReturned !)); } return(InterpetedResult.Create(TypeManager.BoolMember(TypeManager.Bool(true)))); }
public override IInterpetedResult <IInterpetedMember> Interpet(InterpetedContext interpetedContext) { var leftResult = Left.Interpet(interpetedContext); if (leftResult.IsReturn(out var leftReturned, out var leftValue)) { return(InterpetedResult.Return <IInterpetedMember>(leftReturned !)); } var rightResult = Right.Interpet(interpetedContext); if (rightResult.IsReturn(out var rightReturned, out var rightValue)) { return(InterpetedResult.Return <IInterpetedMember>(rightReturned !)); } if (leftValue !.Value.Has <IInterpetedMethod>().Invoke(rightValue !).IsReturn(out var returned, out var _) && returned is IInterpetedMember outReturned) { return(InterpetedResult.Create(outReturned)); } throw new Exception("should never get here!"); }
public abstract IInterpetedResult <IInterpetedMember> Interpet(InterpetedContext interpetedContext);
public IInterpetedResult <IInterpetedMember> Interpet(InterpetedContext interpetedContext) { return(InterpetedResult.Create(TypeManager.BoolMember(TypeManager.Bool(Value)))); }
public IInterpetedResult <IInterpetedMember> Interpet(InterpetedContext interpetedContext) { return(InterpetedResult.Create(TypeManager.EmptyMember(TypeManager.Empty()))); }