public ES3Parser.relationalExpression_return relationalExpression() // throws RecognitionException [1]
{
ES3Parser.relationalExpression_return retval = new ES3Parser.relationalExpression_return();
retval.Start = input.LT(1);
object root_0 = null;
IToken LT46 = null;
IToken GT47 = null;
IToken LTE48 = null;
IToken GTE49 = null;
IToken INSTANCEOF50 = null;
IToken IN51 = null;
ES3Parser.shiftExpression_return left = default(ES3Parser.shiftExpression_return);
ES3Parser.shiftExpression_return right = default(ES3Parser.shiftExpression_return);
object LT46_tree=null;
object GT47_tree=null;
object LTE48_tree=null;
object GTE49_tree=null;
object INSTANCEOF50_tree=null;
object IN51_tree=null;
BinaryExpressionType type = BinaryExpressionType.Unknown;
try
{
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1173:2: (left= shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) right= shiftExpression )* )
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1173:4: left= shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) right= shiftExpression )*
{
root_0 = (object)adaptor.GetNilNode();
PushFollow(FOLLOW_shiftExpression_in_relationalExpression4164);
left = shiftExpression();
state.followingStackPointer--;
adaptor.AddChild(root_0, left.Tree);
retval.value = left.value;
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1173:50: ( ( LT | GT | LTE | GTE | INSTANCEOF | IN ) right= shiftExpression )*
do
{
int alt33 = 2;
int LA33_0 = input.LA(1);
if ( ((LA33_0 >= IN && LA33_0 <= INSTANCEOF) || (LA33_0 >= LT && LA33_0 <= GTE)) )
{
alt33 = 1;
}
switch (alt33)
{
case 1 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1174:3: ( LT | GT | LTE | GTE | INSTANCEOF | IN ) right= shiftExpression
{
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1174:3: ( LT | GT | LTE | GTE | INSTANCEOF | IN )
int alt32 = 6;
switch ( input.LA(1) )
{
case LT:
{
alt32 = 1;
}
break;
case GT:
{
alt32 = 2;
}
break;
case LTE:
{
alt32 = 3;
}
break;
case GTE:
{
alt32 = 4;
}
break;
case INSTANCEOF:
{
alt32 = 5;
}
break;
case IN:
{
alt32 = 6;
}
break;
default:
NoViableAltException nvae_d32s0 =
new NoViableAltException("", 32, 0, input);
throw nvae_d32s0;
}
switch (alt32)
{
case 1 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1174:5: LT
{
LT46=(IToken)Match(input,LT,FOLLOW_LT_in_relationalExpression4175);
LT46_tree = (object)adaptor.Create(LT46);
adaptor.AddChild(root_0, LT46_tree);
type= BinaryExpressionType.Lesser;
}
break;
case 2 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1175:5: GT
{
GT47=(IToken)Match(input,GT,FOLLOW_GT_in_relationalExpression4183);
GT47_tree = (object)adaptor.Create(GT47);
adaptor.AddChild(root_0, GT47_tree);
type= BinaryExpressionType.Greater;
}
break;
case 3 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1176:5: LTE
{
LTE48=(IToken)Match(input,LTE,FOLLOW_LTE_in_relationalExpression4191);
LTE48_tree = (object)adaptor.Create(LTE48);
adaptor.AddChild(root_0, LTE48_tree);
type= BinaryExpressionType.LesserOrEqual;
}
break;
case 4 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1177:5: GTE
{
GTE49=(IToken)Match(input,GTE,FOLLOW_GTE_in_relationalExpression4199);
GTE49_tree = (object)adaptor.Create(GTE49);
adaptor.AddChild(root_0, GTE49_tree);
type= BinaryExpressionType.GreaterOrEqual;
}
break;
case 5 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1178:5: INSTANCEOF
{
INSTANCEOF50=(IToken)Match(input,INSTANCEOF,FOLLOW_INSTANCEOF_in_relationalExpression4207);
INSTANCEOF50_tree = (object)adaptor.Create(INSTANCEOF50);
adaptor.AddChild(root_0, INSTANCEOF50_tree);
type= BinaryExpressionType.InstanceOf;
}
break;
case 6 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1179:5: IN
{
IN51=(IToken)Match(input,IN,FOLLOW_IN_in_relationalExpression4215);
IN51_tree = (object)adaptor.Create(IN51);
adaptor.AddChild(root_0, IN51_tree);
type= BinaryExpressionType.In;
}
break;
}
PushFollow(FOLLOW_shiftExpression_in_relationalExpression4226);
right = shiftExpression();
state.followingStackPointer--;
adaptor.AddChild(root_0, right.Tree);
retval.value = new BinaryExpression(type, retval.value, right.value);
}
break;
default:
goto loop33;
}
} while (true);
loop33:
; // Stops C# compiler whining that label 'loop33' has no statements
}
retval.Stop = input.LT(-1);
retval.Tree = (object)adaptor.RulePostProcessing(root_0);
adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input,re);
// Conversion of the second argument necessary, but harmless
retval.Tree = (object)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re);
}
finally
{
}
return retval;
}
// $ANTLR end "relationalExpression"