예제 #1
0
        public virtual Variable Clone()
        {
            Variable newVar = new Variable();

            newVar.Copy(this);
            return(newVar);
        }
예제 #2
0
        public static Variable GetItem(string data, ref int from)
        {
            MoveForwardIf(data, ref from, Constants.NEXT_ARG, Constants.SPACE);

            if (data.Length <= from)
            {
                throw new ArgumentException("Непълно дефиниране на функциите");
            }

            Variable value = new Variable();

            if (data[from] == Constants.QUOTE)
            {
                // Извличаме низ между котировките.
                from++; // Пропуснете първата оферта.
                if (from < data.Length && data[from] == Constants.QUOTE)
                {
                    // аргументът е ""
                    value.String = "";
                }
                else
                {
                    value.String = Utils.GetToken(data, ref from, Constants.QUOTE_ARRAY);
                }

                from++; // пропуснете следващото разделяне Чар
            }
            else if (data[from] == Constants.START_GROUP)
            {
                // Извличаме списък от къдрави скоби.
                from++; // Прескачане на първата скоба.
                bool isList = true;
                value.Tuple = GetArgs(data, ref from,
                                      Constants.START_GROUP, Constants.END_GROUP, out isList);

                return(value);
            }
            else
            {
                // Променлива, функция или число.
                Variable var = Parser.LoadAndCalculate(data, ref from, Constants.NEXT_OR_END_ARRAY);
                value.Copy(var);
            }

            MoveForwardIf(data, ref from, Constants.END_ARG, Constants.SPACE);
            return(value);
        }
예제 #3
0
        public virtual Variable DeepClone()
        {
            Variable newVar = new Variable();

            newVar.Copy(this);

            if (m_tuple != null)
            {
                List <Variable> newTuple = new List <Variable>();
                foreach (var item in m_tuple)
                {
                    newTuple.Add(item.DeepClone());
                }

                newVar.Tuple = newTuple;
            }
            return(newVar);
        }