internal static bool TryParseCube(IStatedTwoWayEnumerator<Token> enumerator, out MdxExpressionBase expression)
{
enumerator.SavePosition();
expression = null;
var cube = Mdx.Cube();
do
{
if (!IsNextTokenValid(enumerator, TokenType.IdentifierExpression))
{
enumerator.RestoreLastSavedPosition();
return false;
}
string cubeTitleWithBrackets = enumerator.Current.Value;
string cubeTitle = cubeTitleWithBrackets.Substring(1, cubeTitleWithBrackets.Length - 2);
cube.Titled(cubeTitle);
} while (IsNextTokenValid(enumerator, TokenType.IdentifierSeparator));
expression = cube;
enumerator.RemoveLastSavedState();
return true;
}