protected Expression expression()
{
Expression e;
IToken f = null;
IToken f2 = null;
e = null;
ExtendedGeneratorExpression mge = null;
GeneratorExpression ge = null;
try { // for error handling
e=boolean_expression();
{
if ((LA(1)==FOR) && (LA(2)==ID))
{
f = LT(1);
match(FOR);
if (0==inputState.guessing)
{
ge = new GeneratorExpression(ToLexicalInfo(f));
ge.Expression = e;
e = ge;
}
generator_expression_body(ge);
{ // ( ... )*
for (;;)
{
if ((LA(1)==FOR) && (LA(2)==ID))
{
f2 = LT(1);
match(FOR);
if (0==inputState.guessing)
{
if (null == mge)
{
mge = new ExtendedGeneratorExpression(ToLexicalInfo(f));
mge.Items.Add(ge);
e = mge;
}
ge = new GeneratorExpression(ToLexicalInfo(f2));
mge.Items.Add(ge);
}
generator_expression_body(ge);
}
else
{
goto _loop433_breakloop;
}
}
_loop433_breakloop: ;
} // ( ... )*
}
else if ((tokenSet_14_.member(LA(1))) && (tokenSet_15_.member(LA(2)))) {
}
else
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
catch (RecognitionException ex)
{
if (0 == inputState.guessing)
{
reportError(ex, "expression");
recover(ex,tokenSet_14_);
}
else
{
throw ex;
}
}
return e;
}