internal static IInterpetedMethod <TIn, TOut> InternalMethod <TIn, TOut>(InterpetedMemberDefinition <TIn> parameterDefinition, IInterpetedOperation <IInterpetedAnyType>[] body, InterpetedContext context, IInterpetedScopeTemplate scope, IMethodType methodType) where TIn : IInterpetedAnyType where TOut : IInterpetedAnyType => Root(new Func <IRunTimeAnyRoot, RunTimeAnyRootEntry>[] { InterpetedMethodIntention <TIn, TOut>(parameterDefinition, body, context, scope, methodType) }).Has <IInterpetedMethod <TIn, TOut> >();
public IInterpetedResult <IInterpetedMember <T> > Interpet(InterpetedContext interpetedContext) { var member = TypeManager.Member <T>(Type); if (!interpetedContext.TryAddMember(Key, member)) { throw new Exception("bad, shit"); } return(InterpetedResult.Create(member)); }
public IInterpetedResult <IInterpetedMember <T> > Interpet(InterpetedContext interpetedContext) { var leftResult = Left.Interpet(interpetedContext); if (leftResult.IsReturn(out var leftReturned, out var leftValue)) { return(InterpetedResult.Return <IInterpetedMember <T> >(leftReturned)); } return(InterpetedResult.Create(leftValue.Value.GetMember <T>(Right.Key))); }
public override IInterpetedResult <IInterpetedMember <T> > Interpet(InterpetedContext interpetedContext) { var argumentResult = Argument.Interpet(interpetedContext); if (argumentResult.IsReturn(out var argumentReturned, out var argumentValue)) { return(InterpetedResult.Return <IInterpetedMember <T> >(argumentReturned)); } return(InterpetedResult.Return <IInterpetedMember <T> >(argumentValue)); }
internal static Func <IRunTimeAnyRoot, RunTimeAnyRootEntry> InterpetedMethodIntention <TIn, TOut>( InterpetedMemberDefinition <TIn> parameterDefinition, IInterpetedOperation <IInterpetedAnyType>[] body, InterpetedContext context, IInterpetedScopeTemplate scope, IMethodType methodType) where TIn : IInterpetedAnyType where TOut : IInterpetedAnyType => root => { var item = new InterpetedMethod <TIn, TOut>(parameterDefinition, body, context, scope, methodType, root); return(new RunTimeAnyRootEntry(item, methodType)); };
public IInterpetedResult <IInterpetedMember <IInterpetedScope> > Interpet(InterpetedContext interpetedContext) { var scope = ScopeTemplate.Create(); var context = interpetedContext.Child(scope); foreach (var line in StaticInitialization) { line.Interpet(context); } return(InterpetedResult.Create(TypeManager.Member(scope.Convert(TransformerExtensions.NewConversionContext()), scope))); }
public InterpetedMethod( InterpetedMemberDefinition <TIn> parameterDefinition, IInterpetedOperation <IInterpetedAnyType>[] 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 IInterpetedResult <IInterpetedMember <IInterpedEmpty> > Interpet(InterpetedContext interpetedContext) { var scope = interpetedContext.Child(Scope.Create()); foreach (var line in Body) { var result = line.Interpet(scope); if (result.IsReturn(out var res, out var value)) { return(InterpetedResult.Return <IInterpetedMember <IInterpedEmpty> >(res)); } } return(InterpetedResult.Create()); }
public InterpetedImplementation( InterpetedMemberDefinition <TMethodIn> parameterDefinition, InterpetedMemberDefinition <TIn> contextDefinition, IInterpetedOperation <IInterpetedAnyType>[] body, InterpetedContext context, IInterpetedScopeTemplate scope, IImplementationType 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 <IBoxedBool> > Interpet(InterpetedContext interpetedContext) { var leftResult = Left.Interpet(interpetedContext); if (leftResult.IsReturn(out var leftReturned, out var leftValue)) { return(InterpetedResult.Return <IInterpetedMember <IBoxedBool> >(leftReturned)); } var rightResult = Right.Interpet(interpetedContext); if (rightResult.IsReturn(out var rightReturned, out var rightValue)) { return(InterpetedResult.Return <IInterpetedMember <IBoxedBool> >(rightReturned)); } return(InterpetedResult.Create(TypeManager.BoolMember(TypeManager.Bool(rightValue.Cast <IInterpetedMemberSet <TRight> >().TrySet(leftValue.Value))))); }
public override IInterpetedResult <IInterpetedMember <TLeft> > Interpet(InterpetedContext interpetedContext) { var leftResult = Left.Interpet(interpetedContext); if (leftResult.IsReturn(out var leftReturned, out var leftValue)) { return(InterpetedResult.Return <IInterpetedMember <TLeft> >(leftReturned)); } var rightResult = Right.Interpet(interpetedContext); if (rightResult.IsReturn(out var rightReturned, out var rightValue)) { return(InterpetedResult.Return <IInterpetedMember <TLeft> >(rightReturned)); } rightValue.Cast <IInterpetedMemberSet <TRight> >().Set(leftValue.Value); return(InterpetedResult.Create(leftValue)); }
public override IInterpetedResult <IInterpetedMember <TOut> > Interpet(InterpetedContext interpetedContext) { var leftResult = Left.Interpet(interpetedContext); if (leftResult.IsReturn(out var leftReturned, out var leftValue)) { return(InterpetedResult.Return <IInterpetedMember <TOut> >(leftReturned)); } var rightResult = Right.Interpet(interpetedContext); if (rightResult.IsReturn(out var rightReturned, out var rightValue)) { return(InterpetedResult.Return <IInterpetedMember <TOut> >(rightReturned)); } if (!rightValue.Value.Invoke(leftValue).IsReturn(out var _, out var value)) { return(InterpetedResult.Create(value)); } throw new Exception("should never get here!"); }
public IInterpetedResult <IInterpetedMember <T> > Interpet(InterpetedContext interpetedContext) { return(InterpetedResult.Create(interpetedContext.GetMember <T>(MemberDefinition.Key))); }
public IInterpetedResult <IInterpetedMember <IBoxedBool> > Interpet(InterpetedContext interpetedContext) { return(InterpetedResult.Create(TypeManager.BoolMember(TypeManager.Bool(Value)))); }
public IInterpetedResult <IInterpetedMember <IBoxedString> > Interpet(InterpetedContext interpetedContext) { return(InterpetedResult.Create(TypeManager.StringMember(TypeManager.String(Value)))); }
public abstract IInterpetedResult <IInterpetedMember <TOut> > Interpet(InterpetedContext interpetedContext);
public override IInterpetedResult <IInterpetedMember <IBoxedDouble> > Interpet(InterpetedContext interpetedContext) { var leftResult = Left.Interpet(interpetedContext); if (leftResult.IsReturn(out var leftReturned, out var leftValue)) { return(InterpetedResult.Return <IInterpetedMember <IBoxedDouble> >(leftReturned)); } var rightResult = Right.Interpet(interpetedContext); if (rightResult.IsReturn(out var rightReturned, out var rightValue)) { return(InterpetedResult.Return <IInterpetedMember <IBoxedDouble> >(rightReturned)); } return(InterpetedResult.Create(TypeManager.NumberMember(TypeManager.Double( leftValue.Value.Value - rightValue.Value.Value)))); }
internal static IInterpetedImplementation <TIn, TMethodIn, TMethodOut> Implementation <TIn, TMethodIn, TMethodOut>(InterpetedMemberDefinition <TMethodIn> parameterDefinition, InterpetedMemberDefinition <TIn> contextDefinition, IInterpetedOperation <IInterpetedAnyType>[] body, InterpetedContext context, IInterpetedScopeTemplate scope, IImplementationType implementationType) where TIn : class, IInterpetedAnyType where TMethodIn : class, IInterpetedAnyType where TMethodOut : class, IInterpetedAnyType => Root(new Func <IRunTimeAnyRoot, RunTimeAnyRootEntry>[] { InterpetedImplementationIntention <TIn, TMethodIn, TMethodOut>(parameterDefinition, contextDefinition, body, context, scope, implementationType) }).Has <IInterpetedImplementation <TIn, TMethodIn, TMethodOut> >();
public IInterpetedResult <IInterpetedMember <IInterpedEmpty> > Interpet(InterpetedContext interpetedContext) { return(InterpetedResult.Create(TypeManager.EmptyMember(TypeManager.Empty()))); }
public IInterpetedResult <IInterpetedMember <IInterpetedImplementation <TIn, TMethodIn, TMethodOut> > > Interpet(InterpetedContext interpetedContext) { var thing = TypeManager.Implementation <TIn, TMethodIn, TMethodOut>( ParameterDefinition, ContextDefinition, MethodBody, interpetedContext, Scope, ImplementationType); return(InterpetedResult.Create( TypeManager.Member( thing.Convert(TransformerExtensions.NewConversionContext()), thing ))); }
public IInterpetedResult <IInterpetedMember <IBoxedDouble> > Interpet(InterpetedContext interpetedContext) { return(InterpetedResult.Create(TypeManager.NumberMember(TypeManager.Double(Value)))); }