FunctionCall Arguments(final Expression func) :
{
Expression[] args = null;
-final Token token;
+final Token token,lparen;
}
{
- <LPAREN> [ args = ArgumentList() ]
+ lparen = <LPAREN> [ args = ArgumentList() ]
try {
token = <RPAREN>
{return new FunctionCall(func,args,token.sourceEnd);}
} catch (ParseException e) {
errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected to close the argument list";
errorLevel = ERROR;
- errorStart = args[args.length-1].sourceEnd+1;
- errorEnd = args[args.length-1].sourceEnd+1;
+ if (args == null) {
+ errorStart = lparen.sourceEnd+1;
+ errorEnd = lparen.sourceEnd+2;
+ } else {
+ errorStart = args[args.length-1].sourceEnd+1;
+ errorEnd = args[args.length-1].sourceEnd+2;
+ }
processParseExceptionDebug(e);
}
- {return new FunctionCall(func,args,args[args.length-1].sourceEnd);}
+ {
+ int sourceEnd = (args == null && args.length != 0) ? lparen.sourceEnd+1 : args[args.length-1].sourceEnd;
+ return new FunctionCall(func,args,sourceEnd);}
}
/**
}
try {
token = <COLON>
- {return expr;}
} catch (ParseException e) {
errorMessage = "':' expected after case expression";
errorLevel = ERROR;
errorEnd = expr.sourceEnd+1;
processParseExceptionDebug(e);
}
+ {return expr;}
|
token = <_DEFAULT>
try {
<COLON>
- {return null;}
} catch (ParseException e) {
errorMessage = "':' expected after 'default' keyword";
errorLevel = ERROR;
errorEnd = token.sourceEnd+1;
processParseExceptionDebug(e);
}
+ {return null;}
}
Break BreakStatement() :