Пример #1
0
        public TokenList Tokenize(string template)
        {
            //var x = ClassificationRegistry.GetClassificationType(Constants.KeywordClassificationType);


            var stream = new TemplateStream(template);

            var tokens = new TokenList();
            var context = new ContextStack(tokens);
            var scope = new ScopeStack();
            var brace = new BraceStack();

            while (true)
            {
                if (ParseComment(stream, tokens, context))
                    continue;

                if (ParseDollar(stream, tokens, context, scope))
                    continue;

                if (ParseStatement(stream, tokens, context, scope))
                    continue;

                if (ParseFilter(stream, tokens, context, scope))
                    continue;

                if (ParseOther(stream, tokens, context, scope, brace))
                    continue;

                if (stream.Advance() == false)
                    break;
            }

            context.Clear(stream.Position);

            return tokens;
        }