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, }); }
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, }; }