private ExpressionToken fetchNextToken() { char cur = _inputData[_currentIndex]; var token = _tokenMapper.Map(cur); _currentIndex++; switch (token) { case EExpressionTokenType.ParenthesesOpen: return(ExpressionToken.CreateToken(_currentIndex - 1, "(", EExpressionTokenType.ParenthesesOpen)); case EExpressionTokenType.ParenthesesClose: return(ExpressionToken.CreateToken(_currentIndex - 1, ")", EExpressionTokenType.ParenthesesClose)); case EExpressionTokenType.Digit: return(tokenizeNumber(cur)); case EExpressionTokenType.Whitespace: return(ExpressionToken.CreateToken(_currentIndex - 1, " ", EExpressionTokenType.Whitespace)); case EExpressionTokenType.Add: return(ExpressionToken.CreateToken(_currentIndex - 1, "+", EExpressionTokenType.Add)); case EExpressionTokenType.Sub: return(ExpressionToken.CreateToken(_currentIndex - 1, "-", EExpressionTokenType.Sub)); case EExpressionTokenType.Mult: return(ExpressionToken.CreateToken(_currentIndex - 1, "*", EExpressionTokenType.Mult)); case EExpressionTokenType.Div: return(ExpressionToken.CreateToken(_currentIndex - 1, "/", EExpressionTokenType.Div)); } throw new TokenizationException(cur.ToString(), _currentIndex); }
private ExpressionToken fetchNextToken() { char cur = _inputData[_currentIndex]; var token = _tokenMapper.Map(cur); _currentIndex++; switch (token) { case EExpressionTokenType.ParenthesesOpen: return(ExpressionToken.CreateToken(_currentIndex - 1, "(", EExpressionTokenType.ParenthesesOpen)); case EExpressionTokenType.ParenthesesClose: return(ExpressionToken.CreateToken(_currentIndex - 1, ")", EExpressionTokenType.ParenthesesClose)); case EExpressionTokenType.Digit: return(tokenizeNumber(cur)); case EExpressionTokenType.Whitespace: return(ExpressionToken.CreateToken(_currentIndex - 1, " ", EExpressionTokenType.Whitespace)); case EExpressionTokenType.Add: return(ExpressionToken.CreateToken(_currentIndex - 1, "+", EExpressionTokenType.Add)); case EExpressionTokenType.Sub: return(ExpressionToken.CreateToken(_currentIndex - 1, "-", EExpressionTokenType.Sub)); case EExpressionTokenType.Mult: return(ExpressionToken.CreateToken(_currentIndex - 1, "*", EExpressionTokenType.Mult)); case EExpressionTokenType.Div: return(ExpressionToken.CreateToken(_currentIndex - 1, "/", EExpressionTokenType.Div)); } throw new ParseException(String.Format("Error at position {0}: \"{1}\" is not a valid input", _inputData.IndexOf(cur) + 1, cur)); // unmatched ) }