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