BalticAmadeus.FluentMdx.MdxParser.ParseMember C# (CSharp) Method

ParseMember() public method

Performs syntactic analysis on text and if suceeds, returns constructed MdxMember as a result.
public ParseMember ( string source ) : MdxMember
source string String containing Mdx Member text representation.
return MdxMember
        public MdxMember ParseMember(string source)
        {
            string trimmedSource = source.Trim();

            var tokens = _lexer.Tokenize(trimmedSource);

            var enumerator = tokens.GetStatedTwoWayEnumerator();

            MdxExpressionBase expression;
            if (!TryParseMember(enumerator, out expression))
            {
                var tokensLeft = new List<Token>();
                while (enumerator.MoveNext())
                    tokensLeft.Add(enumerator.Current);

                throw new ArgumentException(string.Format("Cannot parse the expression. There are no such rules. {0}.", string.Join(", ", tokensLeft)));
            }

            if (!IsNextTokenValid(enumerator, TokenType.LastToken))
            {
                var tokensLeft = new List<Token>();
                while (enumerator.MoveNext())
                    tokensLeft.Add(enumerator.Current);

                throw new ArgumentException(string.Format("There are tokens left in expression. {0}.", string.Join(", ", tokensLeft)));
            }

            return (MdxMember)expression;
        }