Exemple #1
0
        protected ParserNode HandleLevel_TagSpecial_For()
        {
            Tokens.MoveNext();

            String VarName = CurrentToken.Text;

            Tokens.MoveNext();
            Tokens.ExpectValueAndNext("in");
            ParserNode LoopIterator = HandleLevel_Expression();

            Tokens.ExpectValueAndNext("%}");

            ParserNode ElseBlock = new DummyParserNode();
            ParserNode BodyBlock = HandleLevel_Root();

            if (Tokens.Current.Text == "else")
            {
                Tokens.MoveNext();
                Tokens.ExpectValueAndNext("%}");
                ElseBlock = HandleLevel_Root();
            }

            Tokens.ExpectValueAndNext("endfor");
            Tokens.ExpectValueAndNext("%}");

            return(new ForeachParserNode()
            {
                LoopIterator = LoopIterator,
                VarName = VarName,
                BodyBlock = BodyBlock,
                ElseBlock = ElseBlock,
            });
        }
Exemple #2
0
        public ParserNode HandleLevel_TagSpecial_If()
        {
            bool Alive = true;

            Tokens.MoveNext();

            ParserNode ConditionNode = HandleLevel_Expression();

            Tokens.ExpectValueAndNext("%}");

            ParserNode BodyIfNode   = HandleLevel_Root();
            ParserNode BodyElseNode = new DummyParserNode();

            while (Alive)
            {
                switch (CurrentToken.Text)
                {
                case "endif":
                    Tokens.MoveNext();
                    Tokens.ExpectValueAndNext("%}");
                    Alive = false;
                    break;

                case "else":
                    Tokens.MoveNext();
                    Tokens.ExpectValueAndNext("%}");

                    BodyElseNode = HandleLevel_Root();

                    break;

                default:
                    throw (new Exception(String.Format("Unprocessed Token Type '{0}'", CurrentTokenType)));
                }
            }

            return(new ParserNodeIf()
            {
                ConditionNode = ConditionNode,
                BodyIfNode = BodyIfNode,
                BodyElseNode = BodyElseNode,
            });
        }
        protected ParserNode HandleLevel_TagSpecial_For()
        {
            Tokens.MoveNext();

            String VarName = CurrentToken.Text;
            Tokens.MoveNext();
            Tokens.ExpectValueAndNext("in");
            ParserNode LoopIterator = HandleLevel_Expression();
            Tokens.ExpectValueAndNext("%}");

            ParserNode ElseBlock = new DummyParserNode();
            ParserNode BodyBlock = HandleLevel_Root();

            if (Tokens.Current.Text == "else")
            {
                Tokens.MoveNext();
                Tokens.ExpectValueAndNext("%}");
                ElseBlock = HandleLevel_Root();
            }

            Tokens.ExpectValueAndNext("endfor");
            Tokens.ExpectValueAndNext("%}");

            return new ForeachParserNode()
            {
                LoopIterator = LoopIterator,
                VarName = VarName,
                BodyBlock = BodyBlock,
                ElseBlock = ElseBlock,
            };
        }
        public ParserNode HandleLevel_TagSpecial_If()
        {
            bool Alive = true;

            Tokens.MoveNext();

            ParserNode ConditionNode = HandleLevel_Expression();
            Tokens.ExpectValueAndNext("%}");

            ParserNode BodyIfNode = HandleLevel_Root();
            ParserNode BodyElseNode = new DummyParserNode();

            while (Alive)
            {
                switch (CurrentToken.Text)
                {
                    case "endif":
                        Tokens.MoveNext();
                        Tokens.ExpectValueAndNext("%}");
                        Alive = false;
                        break;
                    case "else":
                        Tokens.MoveNext();
                        Tokens.ExpectValueAndNext("%}");

                        BodyElseNode = HandleLevel_Root();

                        break;
                    default:
                        throw (new Exception(String.Format("Unprocessed Token Type '{0}'", CurrentTokenType)));
                }
            }

            return new ParserNodeIf()
            {
                ConditionNode = ConditionNode,
                BodyIfNode = BodyIfNode,
                BodyElseNode = BodyElseNode,
            };
        }