Esempio n. 1
0
        LexicalScanResult NextSingleSymbol(LexicalScanResultType type)
        {
            var result = new LexicalScanResult(_expression[_current], type);

            _current++;
            return(result);
        }
Esempio n. 2
0
        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);
        }