LexicalScanResult NextSingleSymbol(LexicalScanResultType type) { var result = new LexicalScanResult(_expression[_current], type); _current++; return(result); }
public LexicalScanResult Next() { if (_current >= _expression.Length) { _currentResult = null; } else if (_expression[_current] == '(') { _currentResult = NextSingleSymbol(LexicalScanResultType.BracketOpen); } else if (_expression[_current] == ')') { _currentResult = NextSingleSymbol(LexicalScanResultType.BracketClose); } else if (_expression[_current] == ',') { _currentResult = NextSingleSymbol(LexicalScanResultType.ParameterDelimiter); } else if ("+-*/".Contains(_expression[_current].ToString())) { _currentResult = NextSingleSymbol(LexicalScanResultType.Operation); } else if ("0123456789".Contains(_expression[_current].ToString())) { _currentResult = NextNumeric(); } else { _currentResult = NextFunctionOrVariable(); } return(_currentResult); }