public override Value Evaluate()
        {
            PseudoRecursion pseudoRecursion;

            if (Regions.VariableExists(name))
            {
                var value = Regions[name];
                if (value is not PseudoRecursion recursion)
                {
                    pseudoRecursion = new PseudoRecursion(name);
                    Regions[name]   = pseudoRecursion;
                }
                else
                {
                    pseudoRecursion = recursion;
                }
            }
Example #2
0
        public override Value Evaluate()
        {
            PseudoRecursion pseudoRecursion;

            if (Regions.VariableExists(name))
            {
                var value = Regions[name];
                if (!(value is PseudoRecursion))
                {
                    pseudoRecursion = new PseudoRecursion(name);
                    Regions[name]   = pseudoRecursion;
                }
                else
                {
                    pseudoRecursion = (PseudoRecursion)value;
                }
            }
            else
            {
                pseudoRecursion = new PseudoRecursion(name);
                Regions.CreateVariable(name);
                Regions[name] = pseudoRecursion;
            }
            if (parameters.Length == 0)
            {
                pseudoRecursion.Initialization = block;
            }
            else
            {
                var parameterBlock = new ParameterBlock(parameters, block, parameters.Splatting);
                if (pseudoRecursion.TerminalExpression == null)
                {
                    pseudoRecursion.TerminalExpression = parameterBlock;
                }
                else
                {
                    pseudoRecursion.Main = parameterBlock;
                    pseudoRecursion.Initialize();
                }
            }
            result = ToString();
            return(null);
        }