/* LITERALS */
<PHPPARSING> TOKEN :
{
- < INTEGER_LITERAL:
+ <INTEGER_LITERAL:
<DECIMAL_LITERAL> (["l","L"])?
| <HEX_LITERAL> (["l","L"])?
| <OCTAL_LITERAL> (["l","L"])?
>
|
- < #DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])* >
+ <#DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])* >
|
- < #HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+ >
+ <#HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+ >
|
- < #OCTAL_LITERAL: "0" (["0"-"7"])* >
+ <#OCTAL_LITERAL: "0" (["0"-"7"])* >
|
- < FLOATING_POINT_LITERAL:
+ <FLOATING_POINT_LITERAL:
(["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)? (["f","F","d","D"])?
| "." (["0"-"9"])+ (<EXPONENT>)? (["f","F","d","D"])?
| (["0"-"9"])+ <EXPONENT> (["f","F","d","D"])?
| (["0"-"9"])+ (<EXPONENT>)? ["f","F","d","D"]
>
|
- < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
+ <#EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
|
- < STRING_LITERAL: (<STRING_1> | <STRING_2> | <STRING_3>)>
-| < STRING_1:
+ <STRING_LITERAL: (<STRING_1> | <STRING_2> | <STRING_3>)>
+| <STRING_1:
"\""
(
~["\"","{","}"]
)*
"\""
>
-| < STRING_2:
+| <STRING_2:
"'"
(
~["'"]
"'"
>
-| < STRING_3:
+| <STRING_3:
"`"
(
~["`"]
functionDeclaration = MethodDeclarator()
{outlineInfo.addVariable(new String(functionDeclaration.name));}
} catch (ParseException e) {
- if (errorMessage != null) {
- throw e;
- }
+ if (errorMessage != null) throw e;
errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected";
errorLevel = ERROR;
errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
final int pos = SimpleCharStream.getPosition();
}
{
- [ reference = <BIT_AND> ]
- identifier = <IDENTIFIER>
+ [reference = <BIT_AND>] identifier = <IDENTIFIER>
formalParameters = FormalParameters()
{return new MethodDeclaration(currentSegment,
identifier.image.toCharArray(),
try {
expr = UnaryExpression()
} catch (ParseException e) {
- if (errorMessage != null) {
- throw e;
- }
+ if (errorMessage != null) throw e;
errorMessage = "unexpected token '"+e.currentToken.next.image+"'";
errorLevel = ERROR;
errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
<BIT_AND> expr = UnaryExpressionNoPrefix()
{return new PrefixedUnaryExpression(expr,OperatorIds.AND,pos);}
|
- expr = AtUnaryExpression()
- {return expr;}
+ expr = AtUnaryExpression() {return expr;}
}
Expression AtUnaryExpression() :
| token = <FLOATING_POINT_LITERAL> {pos = SimpleCharStream.getPosition();
return new NumberLiteral(token.image.toCharArray(),pos-token.image.length(),pos);}
| token = <STRING_LITERAL> {pos = SimpleCharStream.getPosition();
- return new StringLiteral(token.image.toCharArray(),pos-token.image.length(),pos);}
+ return new StringLiteral(token.image.toCharArray(),pos-token.image.length());}
| <TRUE> {pos = SimpleCharStream.getPosition();
return new TrueLiteral(pos-4,pos);}
| <FALSE> {pos = SimpleCharStream.getPosition();
FunctionCall Arguments(Expression func) :
{
-ArgumentDeclaration[] args = null;
+Expression[] args = null;
}
{
<LPAREN> [ args = ArgumentList() ]
{return new FunctionCall(func,args,SimpleCharStream.getPosition());}
}
-ArgumentDeclaration[] ArgumentList() :
+/**
+ * An argument list is a list of arguments separated by comma :
+ * argumentDeclaration() (, argumentDeclaration)*
+ * @return an array of arguments
+ */
+Expression[] ArgumentList() :
{
-ArgumentDeclaration arg;
+Expression arg;
final ArrayList list = new ArrayList();
-ArgumentDeclaration argument;
}
{
- arg = argumentDeclaration()
+ arg = Expression()
{list.add(arg);}
( <COMMA>
try {
- arg = argumentDeclaration()
+ arg = Expression()
{list.add(arg);}
} catch (ParseException e) {
errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. An expression expected after a comma in argument list";
}
)*
{
- ArgumentDeclaration[] args = new ArgumentDeclaration[list.size()];
- list.toArray(args);
- return args;}
+ Expression[] arguments = new Expression[list.size()];
+ list.toArray(arguments);
+ return arguments;}
}
-ArgumentDeclaration argumentDeclaration() :
-{
- boolean reference = false;
- String varName;
- Expression initializer = null;
- final int pos = SimpleCharStream.getPosition();
-}
-{
- [<BIT_AND> {reference = true;}]
- varName = VariableDeclaratorId()
- [
- <ASSIGN>
- try {
- initializer = VariableInitializer()
- } catch (ParseException e) {
- errorMessage = "Literal expression expected in variable initializer";
- errorLevel = ERROR;
- errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1;
- errorEnd = jj_input_stream.getPosition() + 1;
- throw e;
- }
- ]
- {
- if (initializer == null) {
- return new ArgumentDeclaration(varName.toCharArray(),
- reference,
- pos);
- }
- return new ArgumentDeclaration(varName.toCharArray(),
- reference,
- initializer,
- pos);
- }
-}
/**
* A Statement without break.
*/