internal static bool TryParseRange(IStatedTwoWayEnumerator<Token> enumerator, out MdxExpressionBase expression)
{
enumerator.SavePosition();
expression = null;
var range = new MdxRange();
MdxExpressionBase fromMember;
if (!TryParseMember(enumerator, out fromMember))
{
enumerator.RestoreLastSavedPosition();
return false;
}
if (!IsNextTokenValid(enumerator, TokenType.RangeSeparator))
{
enumerator.RestoreLastSavedPosition();
return false;
}
range.From((MdxMember)fromMember);
MdxExpressionBase toMember;
if (!TryParseMember(enumerator, out toMember))
{
enumerator.RestoreLastSavedPosition();
return false;
}
range.To((MdxMember) toMember);
expression = range;
enumerator.RemoveLastSavedState();
return true;
}