public Expression sum()
{
Expression expression = null;
IToken token = null;
IToken token2 = null;
BinaryOperatorType type = 0;
try
{
expression = this.term();
while (true)
{
IToken token3;
if ((this.LA(1) != 0x51) && (this.LA(1) != 0x52))
{
return expression;
}
if (!tokenSet_16_.member(this.LA(2)))
{
return expression;
}
switch (this.LA(1))
{
case 0x51:
token = this.LT(1);
this.match(0x51);
if (base.inputState.guessing == 0)
{
token3 = token;
type = 1;
}
break;
case 0x52:
token2 = this.LT(1);
this.match(0x52);
if (base.inputState.guessing == 0)
{
token3 = token2;
type = 2;
}
break;
default:
throw new NoViableAltException(this.LT(1), this.getFilename());
}
Expression expression2 = this.term();
if (base.inputState.guessing == 0)
{
BinaryExpression expression3 = new BinaryExpression(ToLexicalInfo(token3));
expression3.set_Operator(type);
expression3.set_Left(expression);
expression3.set_Right(expression2);
expression = expression3;
}
}
}
catch (RecognitionException exception)
{
if (base.inputState.guessing != 0)
{
throw;
}
this.reportError(exception);
this.recover(exception, tokenSet_20_);
return expression;
}
return expression;
}