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