//

        // CONSTRUCTORS
        public T_Value(bool isPrimitive) : base(
                isPrimitive,
                typeof(T_Value),
                "T_Value",
                "t",
                "s"
                )
        {
            T_Table = FetchT_Table();

            if (isPrimitive)
            {
                return;
            }

            // Associated Data
            SegmentsTitles.Add("From Sample");
            SegmentsTitles.Add("From DataSet");

            Expression[] secondSegment = new Expression[4];
            secondSegment[0] = new PopulationMean();
            secondSegment[1] = new Sample_Mean(false);
            secondSegment[2] = new Sample_SD(false);
            secondSegment[3] = new Sample_Size(false);

            Expression[] thirdSegment = new Expression[2];
            thirdSegment[0] = new PopulationMean();
            thirdSegment[1] = new DataSet();


            SubExpressions.Add(secondSegment);
            SubExpressions.Add(thirdSegment);
        }
Exemple #2
0
        // Binomial Randon Variable
        public Binomial_RV() : base()
        {
            Expression[] firstSegment = new Expression[3];

            firstSegment[0] = new Sample_Size(true);
            firstSegment[1] = new Probability(true);
            firstSegment[2] = new Specific_Number();

            SubExpressions.Add(firstSegment);
        }
        protected override SObject DoFunction()
        {
            if (argsExpressions == null)
            {
                argsExpressions = SubExpressions.FirstOrDefault()?.SubExpressions;
                argsExpressions ??= new List <Expression>();

                if (argsExpressions.Count != Function.ArgsCount)
                {
                    throw new ScriptRuntimeException(Token, $"Complex function needed {Function.ArgsCount} arguments!");
                }
            }

            Func <SObject>[] argsFunc = argsExpressions
                                        .Select(f => new Func <SObject>(() => f.GetResult()))
                                        .ToArray();

            SObject funcResult = Function.GetResult(argsFunc);

            Expression bodyExpression = SubExpressions
                                        .Skip(1)
                                        .First();

            if (funcResult?.BoolValue == true)
            {
                bodyExpression.GetResult();
            }

            while (Function.RetryFunction())
            {
                funcResult = Function.GetResult(argsFunc);

                if (funcResult?.BoolValue == true)
                {
                    bodyExpression.GetResult();
                }
                else
                {
                    break;
                }
            }

            return(funcResult);
        }
Exemple #4
0
        public Sample_Size(bool isPrimitive) : base(
                isPrimitive,
                typeof(Sample_Size),
                "Sample Size",
                "n",
                "s"
                )
        {
            if (isPrimitive)
            {
                return;
            }

            SegmentsTitles.Add("From DataSet");
            Expression[] secondSegment = new Expression[1];

            secondSegment[0] = new DataSet();

            SubExpressions.Add(secondSegment);
        }
Exemple #5
0
        // Probability Mass Function
        public pmf(bool isPrimitive) : base(
                isPrimitive,
                typeof(pmf),
                "pmf",
                "P(X=x)",
                "s"
                )
        {
            if (isPrimitive)
            {
                return;
            }

            SegmentsTitles.Add("From Binomial");
            // Segments
            Expression[] secondSegment = new Expression[1];
            secondSegment[0] = new Binomial_RV();

            SubExpressions.Add(secondSegment);
        }
Exemple #6
0
        public Probability(bool isPrimitive) : base(
                isPrimitive,
                typeof(Probability),
                "Probability",
                "p",
                "s"
                )
        {
            if (isPrimitive)
            {
                return;
            }

            SegmentsTitles.Add("From T_Value");

            Expression[] secondSegment = new Expression[1];
            secondSegment[0] = new T_Value(false);

            SubExpressions.Add(secondSegment);
        }
Exemple #7
0
        protected override SObject DoFunction()
        {
            if (argsExpressions == null)
            {
                argsExpressions = SubExpressions.FirstOrDefault()?.SubExpressions;
                argsExpressions ??= new List <Expression>();

                if (argsExpressions.Count != Function.ArgsCount)
                {
                    throw new ScriptRuntimeException(Token, $"Function <{Token}> need {Function.ArgsCount} argument(s)!");
                }
            }
            SObject[] args = new SObject[argsExpressions.Count];

            for (int i = 0; i < argsExpressions.Count; i++)
            {
                args[i] = argsExpressions[i].GetResult();
            }

            return(Function.GetResult(args));
        }
        protected override SObject DoFunction()
        {
            SObject result = vars[Token.TokenString];

            if (!argumentsChecked)
            {
                if (SubExpressions?.FirstOrDefault() as ArgumentsExpression != null)
                {
                    arguments = SubExpressions[0] as ArgumentsExpression;
                }

                argumentsChecked = true;
            }

            if (arguments != null)
            {
                string ident = arguments.GetResult()?.StringValue;
                return(result.Vars[ident]);
            }
            else
            {
                return(result);
            }
        }
Exemple #9
0
 public override bool Test(TTarget target)
 {
     return(SubExpressions.All(subExpression => subExpression.Test(target)));
 }
Exemple #10
0
 /// <summary>
 /// Добавить дочерние выражения из перечисления
 /// </summary>
 /// <param name="expressions"></param>
 public void AddExpressions(IEnumerable <Expression> expressions)
 {
     expressions.ThrowIfNull("Expression can't be null");
     SubExpressions.AddRange(expressions);
 }
Exemple #11
0
 /// <summary>
 /// Добавить дочерние выражение
 /// </summary>
 /// <param name="expression"></param>
 public void AddExpression(Expression expression)
 {
     expression.ThrowIfNull("Expression can't be null");
     SubExpressions.Add(expression);
 }
Exemple #12
0
 public override string ToString()
 {
     return(string.Join("", SubExpressions.Select(x => x.ToString()).ToList()));
 }
 public override bool Test(TTarget target)
 {
     return(SubExpressions.Count(subExpression => subExpression.Test(target)) == 1);
 }
 public override string ToString()
 {
     return("(" + string.Join("|", SubExpressions.Select(x => x.ToString()).ToList()) + ")");
 }