Ejemplo n.º 1
0
        List <Expression> GetSummandExpressionsAll(string aExpression)
        {
            string _pattern    = @"(?<VarName>[a-z])(\^(?<VarPow>\d+))?";
            string _patternVar = String.Format(@"(?<Coeff>([-]?\d+(,\d+)?))?(?<Var>({0})*)", _pattern);
            Regex  _regexVar   = new Regex(_patternVar);

            MatchCollection _mcVar = _regexVar.Matches(aExpression);

            List <Expression> _res = new List <Expression>();

            for (int i = 0; i < _mcVar.Count; i++)
            {
                Match  _m    = _mcVar[i];
                string _summ = _m.Value;
                if (_summ != String.Empty)
                {
                    GroupCollection _groups = _mcVar[i].Groups;
                    string          _coeff  = _groups["Coeff"].Value != String.Empty ? _groups["Coeff"].Value : "1";

                    Summand _summand = new Summand(Double.Parse(_coeff.Replace(" ", "")));

                    string _varsCapture = _groups["Var"].Value;

                    List <Variable> _vars = GetVariable(_varsCapture, _pattern);
                    _summand.AddVariableRange(_vars);
                    _summand.ToCanonical();

                    SummandExpression _exp = new SummandExpression(_m.Index, _m.Index + _m.Length - 1, _summand);
                    _res.Add(_exp);
                }
            }

            return(_res);
        }