예제 #1
0
파일: HtmlParser.cs 프로젝트: yslib/minimvc
        private StatementNode ParseStatement()
        {
            switch (_curtok.TokenId)
            {
                case TokenId.LCurly:
                case TokenId.Block:
                    BlockStatement block = new BlockStatement(_curtok);
                    ParseBlock(block);
                    return block;
                case TokenId.Semi:
                    Advance();
                    return new StatementNode(_curtok);
                case TokenId.If:
                    return ParseIf();
                case TokenId.For:
                    return ParseFor();
                case TokenId.Break:
                    return ParseBreak();
                case TokenId.Continue:
                    return ParseContinue();
                case TokenId.Dollar:
                    return ParseDollar();
                case TokenId.Echo:
                    return ParseEcho();
                case TokenId.Html:
                    return ParseHtml();
                case TokenId.String:
                case TokenId.Int:
                case TokenId.Double:
                case TokenId.True:
                case TokenId.False:
                case TokenId.Null:
                case TokenId.LParen:
                case TokenId.PlusPlus:
                case TokenId.MinusMinus:
                case TokenId.Ident:
                    {
                        ExpressionStatement node = new ExpressionStatement(ParseExpression());
                        AssertAndAdvance(TokenId.Semi);
                        return node;
                    }
                case TokenId.Var:
                    {
                        Advance();
                        ExpressionStatement node = new ExpressionStatement(ParseExpression());
                        AssertAndAdvance(TokenId.Semi);
                        return node;
                    }
                default:
                    {
                        throw new ParseException("Unknow token, " + _curtok);

                    }
            }
        }