/* 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:
"`"
(
~["`"]
FieldDeclaration FieldDeclaration() :
{
VariableDeclaration variableDeclaration;
- variableDeclarationPtr = 0;
- variableDeclarationStack = new VariableDeclaration[AstStackIncrement];
VariableDeclaration[] list;
+ final ArrayList arrayList = new ArrayList();
final int pos = SimpleCharStream.getPosition();
}
{
<VAR> variableDeclaration = VariableDeclarator()
- {
- pushOnVariableDeclarationStack(variableDeclaration);
- outlineInfo.addVariable(new String(variableDeclaration.name));
- currentSegment.add(variableDeclaration);
- }
- ( <COMMA>
- variableDeclaration = VariableDeclarator()
- {pushOnVariableDeclarationStack(variableDeclaration);
+ {arrayList.add(variableDeclaration);
+ outlineInfo.addVariable(new String(variableDeclaration.name));
+ currentSegment.add(variableDeclaration);}
+ ( <COMMA> variableDeclaration = VariableDeclarator()
+ {arrayList.add(variableDeclaration);
outlineInfo.addVariable(new String(variableDeclaration.name));
currentSegment.add(variableDeclaration);}
)*
throw e;
}
- {list = new VariableDeclaration[variableDeclarationPtr];
- System.arraycopy(variableDeclarationStack,0,list,0,variableDeclarationPtr);
+ {list = new VariableDeclaration[arrayList.size()];
+ arrayList.toArray(list);
return new FieldDeclaration(list,
pos,
SimpleCharStream.getPosition());}
ArrayVariableDeclaration ArrayVariable() :
{
-Expression expr;
-Expression expr2 = null;
+Expression expr,expr2;
}
{
- expr = Expression() [<ARRAYASSIGN> expr2 = Expression()]
+ expr = Expression()
+ [<ARRAYASSIGN> expr2 = Expression()
{return new ArrayVariableDeclaration(expr,expr2);}
+ ]
+ {return new ArrayVariableDeclaration(expr,SimpleCharStream.getPosition());}
}
ArrayVariableDeclaration[] ArrayInitializer() :
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() :
{return new FunctionCall(func,args,SimpleCharStream.getPosition());}
}
+/**
+ * An argument list is a list of arguments separated by comma :
+ * argumentDeclaration() (, argumentDeclaration)*
+ * @return an array of arguments
+ */
ArgumentDeclaration[] ArgumentList() :
{
ArgumentDeclaration arg;
return args;}
}
+/**
+ * Here is an argument declaration.
+ * It's [&]$variablename[=variableInitializer]
+ */
ArgumentDeclaration argumentDeclaration() :
{
boolean reference = false;
throw e;
}
{
- nbNodes = nodePtr-startIndex;
+ nbNodes = nodePtr-startIndex - 1;
blockNodes = new AstNode[nbNodes];
System.arraycopy(nodes,startIndex,blockNodes,0,nbNodes);
return new HTMLBlock(nodes);}
Block Block() :
{
final int pos = SimpleCharStream.getPosition();
- Statement[] statements;
+ final ArrayList list = new ArrayList();
Statement statement;
- final int startingPtr = statementPtr;
- final int length;
}
{
try {
errorEnd = jj_input_stream.getPosition() + 1;
throw e;
}
- ( statement = BlockStatement() {pushOnStatementStack(statement);}
- | statement = htmlBlock() {pushOnStatementStack(statement);})*
+ ( statement = BlockStatement() {list.add(statement);}
+ | statement = htmlBlock() {list.add(statement);})*
try {
<RBRACE>
} catch (ParseException e) {
throw e;
}
{
- length = statementPtr-startingPtr+1;
- statements = new Statement[length];
- System.arraycopy(variableDeclarationStack,startingPtr+1,statements,0,length);
- statementPtr = startingPtr;
+ Statement[] statements = new Statement[list.size()];
+ list.toArray(statements);
return new Block(statements,pos,SimpleCharStream.getPosition());}
}
Statement StatementExpression() :
{
- Expression expr;
+ Expression expr,expr2;
+ int operator;
}
{
expr = PreIncDecExpression() {return expr;}
|
expr = PrimaryExpression()
- [ <INCR> {expr = new PostfixedUnaryExpression(expr,
+ [ <INCR> {return new PostfixedUnaryExpression(expr,
OperatorIds.PLUS_PLUS,
SimpleCharStream.getPosition());}
- | <DECR> {expr = new PostfixedUnaryExpression(expr,
+ | <DECR> {return new PostfixedUnaryExpression(expr,
OperatorIds.MINUS_MINUS,
SimpleCharStream.getPosition());}
- | AssignmentOperator() Expression() ]
+ | operator = AssignmentOperator() expr2 = Expression()
+ {return new BinaryExpression(expr,expr2,operator);}
+ ]
+ {return expr;}
}
SwitchStatement SwitchStatement() :