public ES3Parser.primaryExpression_return primaryExpression() // throws RecognitionException [1]
{
ES3Parser.primaryExpression_return retval = new ES3Parser.primaryExpression_return();
retval.Start = input.LT(1);
object root_0 = null;
IToken ex1 = null;
IToken ex2 = null;
IToken lpar = null;
IToken RPAREN15 = null;
ES3Parser.literal_return ex3 = default(ES3Parser.literal_return);
ES3Parser.arrayLiteral_return ex4 = default(ES3Parser.arrayLiteral_return);
ES3Parser.objectLiteral_return ex5 = default(ES3Parser.objectLiteral_return);
ES3Parser.expression_return ex6 = default(ES3Parser.expression_return);
object ex1_tree=null;
object ex2_tree=null;
object lpar_tree=null;
object RPAREN15_tree=null;
try
{
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:977:2: (ex1= THIS | ex2= Identifier | ex3= literal | ex4= arrayLiteral | ex5= objectLiteral | lpar= LPAREN ex6= expression RPAREN )
int alt6 = 6;
switch ( input.LA(1) )
{
case THIS:
{
alt6 = 1;
}
break;
case Identifier:
{
alt6 = 2;
}
break;
case NULL:
case TRUE:
case FALSE:
case StringLiteral:
case RegularExpressionLiteral:
case DecimalLiteral:
case OctalIntegerLiteral:
case HexIntegerLiteral:
{
alt6 = 3;
}
break;
case LBRACK:
{
alt6 = 4;
}
break;
case LBRACE:
{
alt6 = 5;
}
break;
case LPAREN:
{
alt6 = 6;
}
break;
default:
NoViableAltException nvae_d6s0 =
new NoViableAltException("", 6, 0, input);
throw nvae_d6s0;
}
switch (alt6)
{
case 1 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:977:4: ex1= THIS
{
root_0 = (object)adaptor.GetNilNode();
ex1=(IToken)Match(input,THIS,FOLLOW_THIS_in_primaryExpression3175);
ex1_tree = (object)adaptor.Create(ex1);
adaptor.AddChild(root_0, ex1_tree);
retval.value = new Identifier(ex1.Text);
}
break;
case 2 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:978:4: ex2= Identifier
{
root_0 = (object)adaptor.GetNilNode();
ex2=(IToken)Match(input,Identifier,FOLLOW_Identifier_in_primaryExpression3184);
ex2_tree = (object)adaptor.Create(ex2);
adaptor.AddChild(root_0, ex2_tree);
retval.value = new Identifier(ex2.Text);
}
break;
case 3 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:979:4: ex3= literal
{
root_0 = (object)adaptor.GetNilNode();
PushFollow(FOLLOW_literal_in_primaryExpression3193);
ex3 = literal();
state.followingStackPointer--;
adaptor.AddChild(root_0, ex3.Tree);
retval.value = ex3.value;
}
break;
case 4 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:980:4: ex4= arrayLiteral
{
root_0 = (object)adaptor.GetNilNode();
PushFollow(FOLLOW_arrayLiteral_in_primaryExpression3202);
ex4 = arrayLiteral();
state.followingStackPointer--;
adaptor.AddChild(root_0, ex4.Tree);
retval.value = ex4.value;
}
break;
case 5 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:981:4: ex5= objectLiteral
{
root_0 = (object)adaptor.GetNilNode();
PushFollow(FOLLOW_objectLiteral_in_primaryExpression3211);
ex5 = objectLiteral();
state.followingStackPointer--;
adaptor.AddChild(root_0, ex5.Tree);
retval.value = ex5.value;
}
break;
case 6 :
// C:\\Users\\s.ros\\Projets\\Jint\\Jint\\ES3.g:982:4: lpar= LPAREN ex6= expression RPAREN
{
root_0 = (object)adaptor.GetNilNode();
lpar=(IToken)Match(input,LPAREN,FOLLOW_LPAREN_in_primaryExpression3220);
lpar_tree = (object)adaptor.Create(lpar);
adaptor.AddChild(root_0, lpar_tree);
PushFollow(FOLLOW_expression_in_primaryExpression3224);
ex6 = expression();
state.followingStackPointer--;
adaptor.AddChild(root_0, ex6.Tree);
RPAREN15=(IToken)Match(input,RPAREN,FOLLOW_RPAREN_in_primaryExpression3227);
RPAREN15_tree = (object)adaptor.Create(RPAREN15);
adaptor.AddChild(root_0, RPAREN15_tree);
retval.value = ex6.value;
}
break;
}
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 "primaryExpression"