Ejemplo n.º 1
0
 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>();
Ejemplo n.º 2
0
 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));
 };
Ejemplo n.º 3
0
        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 !));
        }
Ejemplo n.º 4
0
 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));
 }
Ejemplo n.º 5
0
 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));
 }
Ejemplo n.º 6
0
        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))));
        }
Ejemplo n.º 7
0
        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));
        }
Ejemplo n.º 8
0
        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!");
        }
Ejemplo n.º 10
0
 public abstract IInterpetedResult <IInterpetedMember> Interpet(InterpetedContext interpetedContext);
Ejemplo n.º 11
0
 public IInterpetedResult <IInterpetedMember> Interpet(InterpetedContext interpetedContext)
 {
     return(InterpetedResult.Create(TypeManager.BoolMember(TypeManager.Bool(Value))));
 }
Ejemplo n.º 12
0
 public IInterpetedResult <IInterpetedMember> Interpet(InterpetedContext interpetedContext)
 {
     return(InterpetedResult.Create(TypeManager.EmptyMember(TypeManager.Empty())));
 }