JinianNet.JNTemplate.Parser.TemplateLexer.Parse C# (CSharp) Method

Parse() public method

分析所有Token
public Parse ( ) : JinianNet.JNTemplate.Parser.Node.Token[]
return JinianNet.JNTemplate.Parser.Node.Token[]
        public Token[] Parse()
        {
            if (this._kind != TokenKind.EOF)
            {
                do
                {
                    if (this._flagMode != FlagMode.None)
                    {
#if ALLOWCOMMENT
                        if (this._flagMode == FlagMode.Comment)
                        {
                            Next(1);
                            GetToken(TokenKind.TextData);
                            ReadCommentToken();
                        }
#else
                        if (false)
                        {

                        }
#endif
                        else
                        {
                            if (this._flagMode == FlagMode.Full)
                            {
                                Next(this._prefix.Length - 1);
                            }

                            AddToken(GetTokenKind(this._scanner.Read()));
                            switch (this._kind)
                            {
                                case TokenKind.StringStart:
                                    this._pos.Push("\"");
                                    break;
                                case TokenKind.LeftParentheses:
                                    this._pos.Push("(");
                                    break;
                            }
                            ReadToken();
                        }

                    }
                    else if (IsTagStart())
                    {
                        AddToken(TokenKind.TagStart);
                    }
                }
                while (Next());

                AddToken(TokenKind.EOF);


                if (this._flagMode != FlagMode.None)
                {
                    this._flagMode = FlagMode.None;
                    AddToken(new Token(TokenKind.TagEnd, String.Empty));
                }

            }

            return this._collection.ToArray();

        }

Usage Example

示例#1
0
        public virtual void Render(TextWriter writer)
        {
            if (!String.IsNullOrEmpty(TemplateContent))
            {
                TemplateLexer lexer = new TemplateLexer(TemplateContent);

                TemplateParser parser = new TemplateParser(lexer.Parse(), this.Context.Analyzer);

                while (parser.MoveNext())
                {
                    parser.Current.Parse(this.Context, writer);
                }
            }
        }
All Usage Examples Of JinianNet.JNTemplate.Parser.TemplateLexer::Parse