internal static bool TryParseConstantValue(IStatedTwoWayEnumerator<Token> enumerator, out MdxExpressionBase expression)
{
enumerator.SavePosition();
expression = null;
var constantValue = Mdx.ConstantValue();
if (!IsNextTokenValid(enumerator, TokenType.LogicalExpression) &&
!IsNextTokenValid(enumerator, TokenType.DateExpression) &&
!IsNextTokenValid(enumerator, TokenType.TitleExpression) &&
!IsNextTokenValid(enumerator, TokenType.NumberExpression) &&
!IsNextTokenValid(enumerator, TokenType.AnyExpression) &&
!IsNextTokenValid(enumerator, TokenType.Ordering))
{
enumerator.RestoreLastSavedPosition();
return false;
}
string constantVal = enumerator.Current.Value;
if (IsNextTokenValid(enumerator, TokenType.AnyExpression))
constantVal += enumerator.Current.Value;
constantValue.WithValue(constantVal);
expression = constantValue;
enumerator.RemoveLastSavedState();
return true;
}