public ES3Parser.relationalExpressionNoIn_return relationalExpressionNoIn() // throws RecognitionException [1]
{
ES3Parser.relationalExpressionNoIn_return retval = new ES3Parser.relationalExpressionNoIn_return();
retval.Start = input.LT(1);
object root_0 = null;
IToken LT52 = null;
IToken GT53 = null;
IToken LTE54 = null;
IToken GTE55 = null;
IToken INSTANCEOF56 = null;
ES3Parser.shiftExpression_return left = default(ES3Parser.shiftExpression_return);
ES3Parser.shiftExpression_return right = default(ES3Parser.shiftExpression_return);
object LT52_tree=null;
object GT53_tree=null;
object LTE54_tree=null;
object GTE55_tree=null;
object INSTANCEOF56_tree=null;
BinaryExpressionType type = BinaryExpressionType.Unknown;
try
{
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1187:2: (left= shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) right= shiftExpression )* )
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1187:4: left= shiftExpression ( ( LT | GT | LTE | GTE | INSTANCEOF ) right= shiftExpression )*
{
root_0 = (object)adaptor.GetNilNode();
PushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4252);
left = shiftExpression();
state.followingStackPointer--;
adaptor.AddChild(root_0, left.Tree);
retval.value = left.value;
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1187:50: ( ( LT | GT | LTE | GTE | INSTANCEOF ) right= shiftExpression )*
do
{
int alt35 = 2;
int LA35_0 = input.LA(1);
if ( (LA35_0 == INSTANCEOF || (LA35_0 >= LT && LA35_0 <= GTE)) )
{
alt35 = 1;
}
switch (alt35)
{
case 1 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1188:3: ( LT | GT | LTE | GTE | INSTANCEOF ) right= shiftExpression
{
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1188:3: ( LT | GT | LTE | GTE | INSTANCEOF )
int alt34 = 5;
switch ( input.LA(1) )
{
case LT:
{
alt34 = 1;
}
break;
case GT:
{
alt34 = 2;
}
break;
case LTE:
{
alt34 = 3;
}
break;
case GTE:
{
alt34 = 4;
}
break;
case INSTANCEOF:
{
alt34 = 5;
}
break;
default:
NoViableAltException nvae_d34s0 =
new NoViableAltException("", 34, 0, input);
throw nvae_d34s0;
}
switch (alt34)
{
case 1 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1188:5: LT
{
LT52=(IToken)Match(input,LT,FOLLOW_LT_in_relationalExpressionNoIn4263);
LT52_tree = (object)adaptor.Create(LT52);
adaptor.AddChild(root_0, LT52_tree);
type= BinaryExpressionType.Lesser;
}
break;
case 2 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1189:5: GT
{
GT53=(IToken)Match(input,GT,FOLLOW_GT_in_relationalExpressionNoIn4271);
GT53_tree = (object)adaptor.Create(GT53);
adaptor.AddChild(root_0, GT53_tree);
type= BinaryExpressionType.Greater;
}
break;
case 3 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1190:5: LTE
{
LTE54=(IToken)Match(input,LTE,FOLLOW_LTE_in_relationalExpressionNoIn4279);
LTE54_tree = (object)adaptor.Create(LTE54);
adaptor.AddChild(root_0, LTE54_tree);
type= BinaryExpressionType.LesserOrEqual;
}
break;
case 4 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1191:5: GTE
{
GTE55=(IToken)Match(input,GTE,FOLLOW_GTE_in_relationalExpressionNoIn4287);
GTE55_tree = (object)adaptor.Create(GTE55);
adaptor.AddChild(root_0, GTE55_tree);
type= BinaryExpressionType.GreaterOrEqual;
}
break;
case 5 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:1192:5: INSTANCEOF
{
INSTANCEOF56=(IToken)Match(input,INSTANCEOF,FOLLOW_INSTANCEOF_in_relationalExpressionNoIn4295);
INSTANCEOF56_tree = (object)adaptor.Create(INSTANCEOF56);
adaptor.AddChild(root_0, INSTANCEOF56_tree);
type= BinaryExpressionType.InstanceOf;
}
break;
}
PushFollow(FOLLOW_shiftExpression_in_relationalExpressionNoIn4307);
right = shiftExpression();
state.followingStackPointer--;
adaptor.AddChild(root_0, right.Tree);
retval.value = new BinaryExpression(type, retval.value, right.value);
}
break;
default:
goto loop35;
}
} while (true);
loop35:
; // Stops C# compiler whining that label 'loop35' 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 "relationalExpressionNoIn"