public Expression comparison()
{
Expression expression = null;
IToken token = null;
IToken token2 = null;
IToken token3 = null;
IToken token4 = null;
IToken token5 = null;
IToken token6 = null;
IToken token7 = null;
Expression expression2 = null;
BinaryOperatorType type = 0;
IToken token8 = null;
try
{
expression = this.shift();
while (true)
{
if (!tokenSet_56_.member(this.LA(1)) || !tokenSet_57_.member(this.LA(2)))
{
return expression;
}
int num = this.LA(1);
if ((((num == 0x18) || (num == 0x1c)) || ((num == 0x5b) || (num == 0x5c))) || ((num == 0x5f) || (num == 0x60)))
{
num = this.LA(1);
switch (num)
{
case 0x1c:
token = this.LT(1);
this.match(0x1c);
this.match(0x18);
if (base.inputState.guessing == 0)
{
type = 0x1b;
token8 = token;
}
break;
case 0x18:
token2 = this.LT(1);
this.match(0x18);
if (base.inputState.guessing == 0)
{
type = 0x1a;
token8 = token2;
}
break;
case 0x5f:
token3 = this.LT(1);
this.match(0x5f);
if (base.inputState.guessing == 0)
{
type = 9;
token8 = token3;
}
break;
case 0x60:
token4 = this.LT(1);
this.match(0x60);
if (base.inputState.guessing == 0)
{
type = 10;
token8 = token4;
}
break;
case 0x5b:
token5 = this.LT(1);
this.match(0x5b);
if (base.inputState.guessing == 0)
{
type = 7;
token8 = token5;
}
break;
case 0x5c:
token6 = this.LT(1);
this.match(0x5c);
if (base.inputState.guessing == 0)
{
type = 8;
token8 = token6;
}
break;
default:
throw new NoViableAltException(this.LT(1), this.getFilename());
}
expression2 = this.shift();
}
else
{
if (num != 0x1a)
{
throw new NoViableAltException(this.LT(1), this.getFilename());
}
token7 = this.LT(1);
this.match(0x1a);
TypeReference reference = this.type_reference();
if (base.inputState.guessing == 0)
{
type = 0x19;
token8 = token7;
expression2 = new TypeofExpression(reference.get_LexicalInfo(), reference);
}
}
if (base.inputState.guessing == 0)
{
BinaryExpression expression3 = new BinaryExpression(ToLexicalInfo(token8));
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;
}