public IEnumerable <Token> Tokenize(string input, string worksheet)
        {
            if (string.IsNullOrEmpty(input))
            {
                return(Enumerable.Empty <Token>());
            }
            // MA 1401: Ignore leading plus in formula.
            input = input.TrimStart('+');
            var context = new TokenizerContext(input);
            var handler = new TokenHandler(context, _tokenFactory, _separatorProvider);

            handler.Worksheet = worksheet;
            while (handler.HasMore())
            {
                handler.Next();
            }
            if (context.CurrentTokenHasValue)
            {
                context.AddToken(CreateToken(context, worksheet));
            }

            CleanupTokens(context, _separatorProvider.Tokens);

            return(context.Result);
        }
Esempio n. 2
0
        public TokenHandler CreateHandler()
        {
            var handler = new TokenHandler(this, _tokenFactory, TokenSeparatorProvider.Instance);

            handler.Worksheet = _worksheet;
            return(handler);
        }
Esempio n. 3
0
        public IEnumerable <Token> Tokenize(string input, string worksheet)
        {
            if (string.IsNullOrEmpty(input))
            {
                return(Enumerable.Empty <Token>());
            }
            var context = new TokenizerContext(input);
            var handler = new TokenHandler(context, _tokenFactory, _separatorProvider);

            handler.Worksheet = worksheet;
            while (handler.HasMore())
            {
                handler.Next();
            }
            if (context.CurrentTokenHasValue)
            {
                context.AddToken(CreateToken(context, worksheet));
            }

            HandleUnrecognizedTokens(context, _separatorProvider.Tokens);

            return(context.Result);
        }
Esempio n. 4
0
        public IEnumerable<Token> Tokenize(string input, string worksheet)
        {
            if (string.IsNullOrEmpty(input))
            {
                return Enumerable.Empty<Token>();
            }
            // MA 1401: Ignore leading plus in formula.
            input = input.TrimStart('+');
            var context = new TokenizerContext(input);
            var handler = new TokenHandler(context, _tokenFactory, _separatorProvider);
            handler.Worksheet = worksheet;
            while(handler.HasMore())
            {
                handler.Next();
            }
            if (context.CurrentTokenHasValue)
            {
                context.AddToken(CreateToken(context, worksheet));
            }

            CleanupTokens(context, _separatorProvider.Tokens);

            return context.Result;
        }
Esempio n. 5
0
 private void InitHandler(TokenizerContext context)
 {
     var parsingContext = ParsingContext.Create();
     var tokenFactory = new TokenFactory(parsingContext.Configuration.FunctionRepository, null);
     _handler = new TokenHandler(_tokenizerContext, tokenFactory, new TokenSeparatorProvider()); 
 }