From 6b192237060ee7c5bc197be63cf430d186c81e34 Mon Sep 17 00:00:00 2001 From: kpouer Date: Sun, 3 Aug 2003 14:56:38 +0000 Subject: [PATCH] *** empty log message *** --- .../phpdt/internal/compiler/ast/AbstractCase.java | 53 +++++++- .../internal/compiler/ast/AbstractPHPComment.java | 33 ++++- .../compiler/ast/AbstractSuffixExpression.java | 2 +- .../compiler/ast/AbstractVariableDeclaration.java | 15 +- .../internal/compiler/ast/ArgumentDeclaration.java | 16 +- .../internal/compiler/ast/ArrayDeclarator.java | 39 +++++- .../internal/compiler/ast/ArrayInitializer.java | 45 ++++++- .../compiler/ast/ArrayVariableDeclaration.java | 38 +++++- .../phpdt/internal/compiler/ast/AstNode.java | 29 ++++- .../internal/compiler/ast/BinaryExpression.java | 40 +++++- .../phpdt/internal/compiler/ast/Block.java | 55 +++++++- .../internal/compiler/ast/BranchStatement.java | 38 +++++- .../phpdt/internal/compiler/ast/Break.java | 6 +- .../phpdt/internal/compiler/ast/Case.java | 35 ++++- .../internal/compiler/ast/CastExpression.java | 35 ++++- .../phpdt/internal/compiler/ast/ClassAccess.java | 33 ++++- .../internal/compiler/ast/ClassDeclaration.java | 63 ++++++--- .../compiler/ast/ConditionalExpression.java | 41 +++++- .../internal/compiler/ast/ConstantIdentifier.java | 33 ++++- .../phpdt/internal/compiler/ast/Continue.java | 6 +- .../phpdt/internal/compiler/ast/DefaultCase.java | 6 +- .../phpdt/internal/compiler/ast/Define.java | 30 ++++ .../phpdt/internal/compiler/ast/DoStatement.java | 55 ++++++-- .../phpdt/internal/compiler/ast/EchoStatement.java | 54 +++++++- .../phpdt/internal/compiler/ast/Else.java | 71 +++++++++- .../phpdt/internal/compiler/ast/ElseIf.java | 51 +++++++- .../internal/compiler/ast/EmptyStatement.java | 31 ++++- .../phpdt/internal/compiler/ast/Expression.java | 4 +- .../phpdt/internal/compiler/ast/FalseLiteral.java | 7 +- .../internal/compiler/ast/FieldDeclaration.java | 41 +++++- .../phpdt/internal/compiler/ast/ForStatement.java | 74 +++++++++-- .../internal/compiler/ast/ForeachStatement.java | 50 ++++++- .../phpdt/internal/compiler/ast/FunctionCall.java | 44 ++++++- .../internal/compiler/ast/GlobalStatement.java | 43 ++++++- .../phpdt/internal/compiler/ast/HTMLBlock.java | 34 ++++- .../phpdt/internal/compiler/ast/HTMLCode.java | 35 +++++- .../phpdt/internal/compiler/ast/IfStatement.java | 82 +++++++++-- .../internal/compiler/ast/InclusionStatement.java | 38 +++++- .../internal/compiler/ast/LabeledStatement.java | 30 ++++- .../internal/compiler/ast/ListExpression.java | 56 +++++++- .../phpdt/internal/compiler/ast/Literal.java | 29 ++++- .../phpdt/internal/compiler/ast/MagicLiteral.java | 2 +- .../internal/compiler/ast/MethodDeclaration.java | 144 +++++++++++++++++-- .../phpdt/internal/compiler/ast/NullLiteral.java | 2 +- .../phpdt/internal/compiler/ast/NumberLiteral.java | 4 +- .../internal/compiler/ast/OperatorExpression.java | 2 +- .../phpdt/internal/compiler/ast/PHPDocument.java | 11 +- .../phpdt/internal/compiler/ast/PHPEchoBlock.java | 57 +++++++- .../compiler/ast/PostfixedUnaryExpression.java | 4 +- .../compiler/ast/PrefixedUnaryExpression.java | 4 +- .../internal/compiler/ast/PrintExpression.java | 29 ++++- .../internal/compiler/ast/ReturnStatement.java | 33 ++++- .../phpdt/internal/compiler/ast/Statement.java | 9 +- .../internal/compiler/ast/StaticStatement.java | 39 +++++- .../phpdt/internal/compiler/ast/StringLiteral.java | 81 ++++++------ .../internal/compiler/ast/SwitchStatement.java | 57 +++++++- .../phpdt/internal/compiler/ast/TrueLiteral.java | 10 ++- 57 files changed, 1732 insertions(+), 276 deletions(-) diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AbstractCase.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AbstractCase.java index e31da6b..0af2440 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AbstractCase.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AbstractCase.java @@ -1,13 +1,64 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** + * Superclass of case statement that we can find in a switch. * @author Matthieu Casanova */ public abstract class AbstractCase extends Statement { + + /** The statements in the case. */ public Statement[] statements; - public AbstractCase(Statement[] statements, int sourceStart, int sourceEnd) { + /** + * Create a case statement + * @param statements the statements array + * @param sourceStart the beginning source offset + * @param sourceEnd the ending offset + */ + public AbstractCase(final Statement[] statements, + final int sourceStart, + final int sourceEnd) { super(sourceStart, sourceEnd); this.statements = statements; } + + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < statements.length; i++) { + list.addAll(statements[i].getOutsideVariable()); + } + return list; + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < statements.length; i++) { + list.addAll(statements[i].getModifiedVariable()); + } + return list; + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < statements.length; i++) { + list.addAll(statements[i].getUsedVariable()); + } + return list; + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AbstractPHPComment.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AbstractPHPComment.java index 0d3f2f0..9eee781 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AbstractPHPComment.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AbstractPHPComment.java @@ -1,5 +1,10 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import net.sourceforge.phpdt.internal.compiler.ast.declarations.VariableUsage; + +import java.util.List; +import java.util.ArrayList; + /** * Here are php comment. * @author Matthieu Casanova @@ -7,11 +12,35 @@ package net.sourceforge.phpdt.internal.compiler.ast; public abstract class AbstractPHPComment extends AstNode { /** - * Create a comment giving starting and ending offset + * Create a comment giving starting and ending offset. * @param sourceStart starting offset * @param sourceEnd ending offset */ - public AbstractPHPComment(int sourceStart, int sourceEnd) { + public AbstractPHPComment(final int sourceStart, final int sourceEnd) { super(sourceStart, sourceEnd); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return an empty list + */ + public List getOutsideVariable() { + return new ArrayList(); + } + + /** + * get the modified variables. + * @return an empty list + */ + public List getModifiedVariable() { + return new ArrayList(); + } + + /** + * Get the variables used. + * @return an empty list + */ + public List getUsedVariable() { + return new ArrayList(); + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AbstractSuffixExpression.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AbstractSuffixExpression.java index b429e48..316d271 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AbstractSuffixExpression.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AbstractSuffixExpression.java @@ -8,7 +8,7 @@ package net.sourceforge.phpdt.internal.compiler.ast; */ public abstract class AbstractSuffixExpression extends Expression { - public AbstractSuffixExpression(int sourceStart, int sourceEnd) { + public AbstractSuffixExpression(final int sourceStart, final int sourceEnd) { super(sourceStart, sourceEnd); } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AbstractVariableDeclaration.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AbstractVariableDeclaration.java index 9fbe9ae..cde0daf 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AbstractVariableDeclaration.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AbstractVariableDeclaration.java @@ -1,5 +1,10 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import net.sourceforge.phpdt.internal.compiler.ast.declarations.VariableUsage; + +import java.util.List; +import java.util.ArrayList; + /** * An abstract variable declaration. @@ -15,16 +20,10 @@ public abstract class AbstractVariableDeclaration extends Expression { * @param sourceEnd ending offset * @param name the name of the variable */ - public AbstractVariableDeclaration(char[] name, int sourceStart, int sourceEnd) { + public AbstractVariableDeclaration(final char[] name, final int sourceStart, final int sourceEnd) { super(sourceStart, sourceEnd); this.name = name; } - /** - * Get the name of the field as String. - * @return the name of the String - */ - public String name() { - return new String(name); - } + } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ArgumentDeclaration.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ArgumentDeclaration.java index 2d6f723..be35c1d 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ArgumentDeclaration.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ArgumentDeclaration.java @@ -17,11 +17,11 @@ public class ArgumentDeclaration extends VariableDeclaration { * @param initialization the initialization * @param sourceStart the start point */ - public ArgumentDeclaration(char[] name, - boolean reference, - Expression initialization, - int sourceStart) { - super(name, initialization, sourceStart); + public ArgumentDeclaration(final char[] name, + final boolean reference, + final Expression initialization, + final int sourceStart) { + super(name, initialization,VariableDeclaration.EQUAL, sourceStart); this.reference = reference; } @@ -31,9 +31,9 @@ public class ArgumentDeclaration extends VariableDeclaration { * @param reference the variable is a reference ? * @param sourceStart the start point */ - public ArgumentDeclaration(char[] name, - boolean reference, - int sourceStart) { + public ArgumentDeclaration(final char[] name, + final boolean reference, + final int sourceStart) { super(name, sourceStart); this.reference = reference; } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ArrayDeclarator.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ArrayDeclarator.java index 9b8fd9d..3f3e474 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ArrayDeclarator.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ArrayDeclarator.java @@ -1,5 +1,8 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** * @author Matthieu Casanova */ @@ -8,9 +11,9 @@ public class ArrayDeclarator extends AbstractSuffixExpression { public Expression prefix; public Expression vars; - public ArrayDeclarator(Expression prefix, - Expression vars, - int sourceEnd) { + public ArrayDeclarator(final Expression prefix, + final Expression vars, + final int sourceEnd) { super(prefix.sourceStart, sourceEnd); this.prefix = prefix; this.vars = vars; @@ -29,4 +32,34 @@ public class ArrayDeclarator extends AbstractSuffixExpression { buff.append(']'); return buff.toString(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + return new ArrayList(); + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + final ArrayList list = new ArrayList(); + list.addAll(prefix.getModifiedVariable()); + list.addAll(vars.getModifiedVariable()); + return list; + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + final ArrayList list = new ArrayList(); + list.addAll(prefix.getUsedVariable()); + list.addAll(vars.getUsedVariable()); + return list; + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ArrayInitializer.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ArrayInitializer.java index 0979b23..9f3160f 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ArrayInitializer.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ArrayInitializer.java @@ -1,5 +1,10 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import net.sourceforge.phpdt.internal.compiler.ast.declarations.VariableUsage; + +import java.util.List; +import java.util.ArrayList; + /** * @author Matthieu Casanova */ @@ -7,9 +12,9 @@ public class ArrayInitializer extends Expression { public ArrayVariableDeclaration[] vars; - public ArrayInitializer(ArrayVariableDeclaration[] vars, - int sourceStart, - int sourceEnd) { + public ArrayInitializer(final ArrayVariableDeclaration[] vars, + final int sourceStart, + final int sourceEnd) { super(sourceStart, sourceEnd); this.vars = vars; } @@ -21,7 +26,7 @@ public class ArrayInitializer extends Expression { public String toStringExpression() { final StringBuffer buff = new StringBuffer("array("); for (int i = 0; i < vars.length; i++) { - ArrayVariableDeclaration var = vars[i]; + final ArrayVariableDeclaration var = vars[i]; if (i != 0) { buff.append(","); } @@ -30,4 +35,36 @@ public class ArrayInitializer extends Expression { buff.append(")"); return buff.toString(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + return new ArrayList(); + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < vars.length; i++) { + list.addAll(vars[i].getModifiedVariable()); + } + return list; + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < vars.length; i++) { + list.addAll(vars[i].getUsedVariable()); + } + return list; + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ArrayVariableDeclaration.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ArrayVariableDeclaration.java index 38d3527..c213bd3 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ArrayVariableDeclaration.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ArrayVariableDeclaration.java @@ -1,5 +1,8 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** * This variable declaration do not extend AbstractVariableDeclaration because * it could take Expression as key. @@ -9,13 +12,13 @@ public class ArrayVariableDeclaration extends Expression { public Expression key,value; - public ArrayVariableDeclaration(Expression key,Expression value) { + public ArrayVariableDeclaration(final Expression key,final Expression value) { super(key.sourceStart, value.sourceEnd); this.key = key; this.value = value; } - public ArrayVariableDeclaration(Expression key,int sourceEnd) { + public ArrayVariableDeclaration(final Expression key,final int sourceEnd) { super(key.sourceStart, sourceEnd); this.key = key; } @@ -32,4 +35,35 @@ public class ArrayVariableDeclaration extends Expression { } return buff.toString(); } + + + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + return new ArrayList(); + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + final ArrayList list = new ArrayList(); + list.addAll(key.getModifiedVariable()); + list.addAll(value.getModifiedVariable()); + return list; + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + final ArrayList list = new ArrayList(); + list.addAll(value.getUsedVariable()); + return list; + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AstNode.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AstNode.java index 9eabb41..237ce92 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AstNode.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/AstNode.java @@ -1,5 +1,7 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; + /** * It will be the mother of our own ast tree for php just like the ast tree of Eclipse. * @author Matthieu Casanova @@ -14,7 +16,7 @@ public abstract class AstNode { * @param sourceStart starting offset * @param sourceEnd ending offset */ - public AstNode(int sourceStart, int sourceEnd) { + public AstNode(final int sourceStart, final int sourceEnd) { this.sourceStart = sourceStart; this.sourceEnd = sourceEnd; } @@ -24,10 +26,11 @@ public abstract class AstNode { * @param tab the number of tabulations * @return a String containing some spaces */ - public static String tabString(int tab) { - StringBuffer s = new StringBuffer(); - for (int i = tab; i > 0; i--) + public static String tabString(final int tab) { + final StringBuffer s = new StringBuffer(2 * tab); + for (int i = tab; i > 0; i--) { s.append(" "); //$NON-NLS-1$ + } return s.toString(); } @@ -46,4 +49,22 @@ public abstract class AstNode { * @return a String */ public abstract String toString(int tab); + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public abstract List getOutsideVariable(); + + /** + * get the modified variables. + * @return the variables modified + */ + public abstract List getModifiedVariable(); + + /** + * Get the variables used. + * @return the variables used + */ + public abstract List getUsedVariable(); } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/BinaryExpression.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/BinaryExpression.java index 5f54d9e..3455363 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/BinaryExpression.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/BinaryExpression.java @@ -1,5 +1,8 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** * @author Matthieu Casanova */ @@ -8,9 +11,9 @@ public class BinaryExpression extends OperatorExpression { /** The two expressions. */ public Expression left,right; - public BinaryExpression(Expression left, - Expression right, - int operator) { + public BinaryExpression(final Expression left, + final Expression right, + final int operator) { super(operator, left.sourceStart, right.sourceEnd); this.left = left; this.right = right; @@ -22,4 +25,35 @@ public class BinaryExpression extends OperatorExpression { buff.append(right.toStringExpression()); return buff.toString(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + return new ArrayList(); + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + final ArrayList list = new ArrayList(); + list.addAll(left.getModifiedVariable()); + list.addAll(right.getModifiedVariable()); + return list; + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + final ArrayList list = new ArrayList(); + list.addAll(left.getUsedVariable()); + list.addAll(right.getUsedVariable()); + return list; + } + } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Block.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Block.java index b3ef5d1..d2371be 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Block.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Block.java @@ -1,7 +1,10 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** - * A Block is + * A Block. * { * statements * }. @@ -18,30 +21,72 @@ public class Block extends Statement { * @param sourceStart starting offset * @param sourceEnd ending offset */ - public Block(Statement[] statements,int sourceStart, int sourceEnd) { + public Block(final Statement[] statements, + final int sourceStart, + final int sourceEnd) { super(sourceStart, sourceEnd); this.statements = statements; } + /** + * tell if the block is empty. + * @return the block is empty if there are no statements in it + */ public boolean isEmptyBlock() { return statements == null; } /** * Return the block as String. - * @param tab how many tabs + * @param tab how many tabs * @return the string representation of the block */ - public String toString(int tab) { + public String toString(final int tab) { final String s = AstNode.tabString(tab); final StringBuffer buff = new StringBuffer(s); buff.append("{\n"); //$NON-NLS-1$ if (this.statements != null) { for (int i = 0; i < statements.length; i++) { - buff.append(statements[i].toString(tab+1)).append(";\n");//$NON-NLS-1$ + buff.append(statements[i].toString(tab + 1)).append(";\n");//$NON-NLS-1$ } } buff.append("}\n"); //$NON-NLS-1$ return buff.toString(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < statements.length; i++) { + list.addAll(statements[i].getOutsideVariable()); + } + return list; + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < statements.length; i++) { + list.addAll(statements[i].getModifiedVariable()); + } + return list; + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < statements.length; i++) { + list.addAll(statements[i].getUsedVariable()); + } + return list; + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/BranchStatement.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/BranchStatement.java index f38d816..2c164c4 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/BranchStatement.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/BranchStatement.java @@ -1,5 +1,8 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** * Here is a branchstatement : break or continue * @author Matthieu Casanova @@ -8,8 +11,41 @@ public abstract class BranchStatement extends Statement { public Expression expression; - public BranchStatement(Expression expression,int sourceStart, int sourceEnd) { + public BranchStatement(final Expression expression, final int sourceStart, final int sourceEnd) { super(sourceStart, sourceEnd); this.expression = expression; } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + if (expression == null) { + return new ArrayList(); + } + return expression.getOutsideVariable(); + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + if (expression == null) { + return new ArrayList(); + } + return expression.getModifiedVariable(); + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + if (expression == null) { + return new ArrayList(); + } + return expression.getUsedVariable(); + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Break.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Break.java index 08b273b..158cb3d 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Break.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Break.java @@ -6,12 +6,12 @@ package net.sourceforge.phpdt.internal.compiler.ast; */ public class Break extends BranchStatement { - public Break(Expression expression, int sourceStart, int sourceEnd) { + public Break(final Expression expression, final int sourceStart, final int sourceEnd) { super(expression, sourceStart, sourceEnd); } - public String toString(int tab) { - String s = tabString(tab); + public String toString(final int tab) { + final String s = tabString(tab); if (expression != null) { return s + "break " + expression.toString();//$NON-NLS-1$ } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Case.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Case.java index a66d3f1..1428b25 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Case.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Case.java @@ -1,5 +1,7 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; + /** * A Case statement for a Switch. * @author Matthieu Casanova @@ -7,12 +9,11 @@ package net.sourceforge.phpdt.internal.compiler.ast; public class Case extends AbstractCase { public Expression value; - public Statement[] statements; - public Case(Expression value, - Statement[] statements, - int sourceStart, - int sourceEnd) { + public Case(final Expression value, + final Statement[] statements, + final int sourceStart, + final int sourceEnd) { super(statements, sourceStart, sourceEnd); this.value = value; } @@ -22,17 +23,37 @@ public class Case extends AbstractCase { * @param tab how many tabs (not used here * @return a String */ - public String toString(int tab) { + public String toString(final int tab) { final StringBuffer buff = new StringBuffer(tabString(tab)); buff.append("case "); buff.append(value.toStringExpression()); buff.append(" :\n"); if (statements != null) { for (int i = 0; i < statements.length; i++) { - Statement statement = statements[i]; + final Statement statement = statements[i]; buff.append(statement.toString(tab + 1)); } } return buff.toString(); } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + final List list = super.getModifiedVariable(); + list.addAll(value.getModifiedVariable()); + return list; + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + final List list = super.getUsedVariable(); + list.addAll(value.getUsedVariable()); + return list; + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/CastExpression.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/CastExpression.java index 9c7da62..8291f62 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/CastExpression.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/CastExpression.java @@ -1,5 +1,8 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** * This is a cast expression. * @author Matthieu Casanova @@ -19,10 +22,10 @@ public class CastExpression extends Expression { * @param sourceStart starting offset * @param sourceEnd ending offset */ - public CastExpression(ConstantIdentifier type, - Expression expression, - int sourceStart, - int sourceEnd) { + public CastExpression(final ConstantIdentifier type, + final Expression expression, + final int sourceStart, + final int sourceEnd) { super(sourceStart, sourceEnd); this.type = type; this.expression = expression; @@ -39,4 +42,28 @@ public class CastExpression extends Expression { buff.append(expression.toStringExpression()); return buff.toString(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + return new ArrayList(); + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + return expression.getModifiedVariable(); + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + return expression.getUsedVariable(); + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ClassAccess.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ClassAccess.java index b46e802..8e332c8 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ClassAccess.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ClassAccess.java @@ -1,5 +1,8 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** * Any class access. * @author Matthieu Casanova @@ -13,9 +16,9 @@ public class ClassAccess extends AbstractSuffixExpression { public Expression suffix; public int type; - public ClassAccess(Expression prefix, - Expression suffix, - int type) { + public ClassAccess(final Expression prefix, + final Expression suffix, + final int type) { super(prefix.sourceStart, suffix.sourceEnd); this.prefix = prefix; this.suffix = suffix; @@ -41,4 +44,28 @@ public class ClassAccess extends AbstractSuffixExpression { buff.append(suffix.toStringExpression()); return buff.toString(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + return new ArrayList(); + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + return new ArrayList(); + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + return prefix.getUsedVariable(); + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ClassDeclaration.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ClassDeclaration.java index 000afb9..5bdc3c6 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ClassDeclaration.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ClassDeclaration.java @@ -2,12 +2,14 @@ package net.sourceforge.phpdt.internal.compiler.ast; import net.sourceforge.phpdt.internal.compiler.parser.Outlineable; import net.sourceforge.phpdt.internal.compiler.parser.OutlineableWithChildren; +import net.sourceforge.phpdt.internal.compiler.ast.declarations.VariableUsage; import net.sourceforge.phpdt.internal.ui.PHPUiImages; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.text.Position; import java.util.ArrayList; import java.util.List; +import java.util.Enumeration; /** @@ -39,16 +41,17 @@ public class ClassDeclaration extends Statement implements OutlineableWithChildr private ArrayList children = new ArrayList(); private Position position; + /** * Create a class giving starting and ending offset * @param sourceStart starting offset * @param sourceEnd ending offset */ - public ClassDeclaration(Object parent, - char[] name, - char[] superclass, - int sourceStart, - int sourceEnd) { + public ClassDeclaration(final Object parent, + final char[] name, + final char[] superclass, + final int sourceStart, + final int sourceEnd) { super(sourceStart, sourceEnd); this.parent = parent; this.name = name; @@ -61,17 +64,17 @@ public class ClassDeclaration extends Statement implements OutlineableWithChildr * @param sourceStart starting offset * @param sourceEnd ending offset */ - public ClassDeclaration(Object parent, - char[] name, - int sourceStart, - int sourceEnd) { + public ClassDeclaration(final Object parent, + final char[] name, + final int sourceStart, + final int sourceEnd) { super(sourceStart, sourceEnd); this.parent = parent; this.name = name; position = new Position(sourceStart, name.length); } - public void addMethod(MethodDeclaration method) { + public void addMethod(final MethodDeclaration method) { methods.add(method); add(method); if (method.name.equals(name)) { @@ -79,15 +82,15 @@ public class ClassDeclaration extends Statement implements OutlineableWithChildr } } - public void addField(FieldDeclaration var) { + public void addField(final FieldDeclaration var) { for (int i = 0; i < var.vars.length; i++) { - VariableDeclaration c = var.vars[i]; + final VariableDeclaration c = var.vars[i]; children.add(c); } fields.add(var); } - public boolean add(Outlineable o) { + public boolean add(final Outlineable o) { return children.add(o); } @@ -104,7 +107,7 @@ public class ClassDeclaration extends Statement implements OutlineableWithChildr * @param tab how many tabs before the class * @return the code of this class into String */ - public String toString(int tab) { + public String toString(final int tab) { return tabString(tab) + toStringHeader() + toStringBody(tab); } @@ -113,18 +116,18 @@ public class ClassDeclaration extends Statement implements OutlineableWithChildr * @param tab how many tabs before the body of the class * @return the body as String */ - public String toStringBody(int tab) { + public String toStringBody(final int tab) { final StringBuffer buff = new StringBuffer(" {");//$NON-NLS-1$ if (fields != null) { for (int i = 0; i < fields.size(); i++) { - FieldDeclaration field = (FieldDeclaration) fields.get(i); + final FieldDeclaration field = (FieldDeclaration) fields.get(i); buff.append("\n"); //$NON-NLS-1$ buff.append(field.toString(tab + 1)); buff.append(";");//$NON-NLS-1$ } } for (int i = 0; i < methods.size(); i++) { - MethodDeclaration o = (MethodDeclaration) methods.get(i); + final MethodDeclaration o = (MethodDeclaration) methods.get(i); buff.append("\n");//$NON-NLS-1$ buff.append(o.toString(tab + 1)); } @@ -157,7 +160,7 @@ public class ClassDeclaration extends Statement implements OutlineableWithChildr return parent; } - public Outlineable get(int index) { + public Outlineable get(final int index) { return (Outlineable) children.get(index); } @@ -181,4 +184,28 @@ public class ClassDeclaration extends Statement implements OutlineableWithChildr public List getList() { return children; } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + return new ArrayList(); + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + return new ArrayList(); + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + return new ArrayList(); + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ConditionalExpression.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ConditionalExpression.java index b2e39fb..121a158 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ConditionalExpression.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ConditionalExpression.java @@ -1,5 +1,8 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** * A ConditionalExpression is like that : booleanExpression ? trueValue : falseValue; * @author Matthieu Casanova @@ -8,9 +11,9 @@ public class ConditionalExpression extends OperatorExpression { public Expression condition, valueIfTrue, valueIfFalse; - public ConditionalExpression(Expression condition, - Expression valueIfTrue, - Expression valueIfFalse) { + public ConditionalExpression(final Expression condition, + final Expression valueIfTrue, + final Expression valueIfFalse) { super(-1, condition.sourceStart, valueIfFalse.sourceEnd); this.condition = condition; this.valueIfTrue = valueIfTrue; @@ -26,4 +29,36 @@ public class ConditionalExpression extends OperatorExpression { buff.append(valueIfFalse.toStringExpression()); return buff.toString(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + return new ArrayList(); + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + final ArrayList list = new ArrayList(); + list.addAll(condition.getModifiedVariable()); + list.addAll(valueIfTrue.getModifiedVariable()); + list.addAll(valueIfFalse.getModifiedVariable()); + return list; + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + final ArrayList list = new ArrayList(); + list.addAll(condition.getUsedVariable()); + list.addAll(valueIfTrue.getUsedVariable()); + list.addAll(valueIfFalse.getUsedVariable()); + return list; + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ConstantIdentifier.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ConstantIdentifier.java index dec383e..a157522 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ConstantIdentifier.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ConstantIdentifier.java @@ -1,5 +1,8 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** * @author Matthieu Casanova */ @@ -7,9 +10,9 @@ public class ConstantIdentifier extends Expression { public char[] name; - public ConstantIdentifier(char[] name, - int sourceStart, - int sourceEnd) { + public ConstantIdentifier(final char[] name, + final int sourceStart, + final int sourceEnd) { super(sourceStart, sourceEnd); this.name = name; } @@ -21,4 +24,28 @@ public class ConstantIdentifier extends Expression { public String toStringExpression() { return new String(name); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + return new ArrayList(); + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + return new ArrayList(); + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + return new ArrayList(); + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Continue.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Continue.java index c862a2f..16c3fcd 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Continue.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Continue.java @@ -6,12 +6,12 @@ package net.sourceforge.phpdt.internal.compiler.ast; */ public class Continue extends BranchStatement { - public Continue(Expression expression, int sourceStart, int sourceEnd) { + public Continue(final Expression expression, final int sourceStart, final int sourceEnd) { super(expression, sourceStart, sourceEnd); } - public String toString(int tab) { - String s = tabString(tab); + public String toString(final int tab) { + final String s = tabString(tab); if (expression == null) { return s + "continue";//$NON-NLS-1$ } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/DefaultCase.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/DefaultCase.java index 7d08200..758c404 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/DefaultCase.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/DefaultCase.java @@ -5,7 +5,7 @@ package net.sourceforge.phpdt.internal.compiler.ast; */ public class DefaultCase extends AbstractCase { - public DefaultCase(Statement[] statements, int sourceStart, int sourceEnd) { + public DefaultCase(final Statement[] statements, final int sourceStart, final int sourceEnd) { super(statements, sourceStart, sourceEnd); } @@ -14,11 +14,11 @@ public class DefaultCase extends AbstractCase { * @param tab how many tabs (not used here * @return a String */ - public String toString(int tab) { + public String toString(final int tab) { final StringBuffer buff = new StringBuffer(tabString(tab)); buff.append("default : \n"); //$NON-NLS-1$ for (int i = 0; i < statements.length; i++) { - Statement statement = statements[i]; + final Statement statement = statements[i]; buff.append(statement.toString(tab + 9)); } return buff.toString(); diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Define.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Define.java index 8a85495..669f90d 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Define.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Define.java @@ -3,8 +3,12 @@ package net.sourceforge.phpdt.internal.compiler.ast; import org.eclipse.jface.text.Position; import org.eclipse.jface.resource.ImageDescriptor; import net.sourceforge.phpdt.internal.compiler.parser.Outlineable; +import net.sourceforge.phpdt.internal.compiler.ast.declarations.VariableUsage; import net.sourceforge.phpdt.internal.ui.PHPUiImages; +import java.util.List; +import java.util.ArrayList; + /** * a Define. * define(expression,expression) @@ -57,4 +61,30 @@ public class Define extends Statement implements Outlineable { public Position getPosition() { return position; } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + final ArrayList list = new ArrayList(1); + list.add(new VariableUsage(defineName.toStringExpression(),sourceStart));//todo: someday : evaluate the defineName + return list; + } + + /** + * get the modified variables. + * @return the variables modified + */ + public List getModifiedVariable() { + return new ArrayList(); + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + return new ArrayList(); + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/DoStatement.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/DoStatement.java index 1a80333..f3ee853 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/DoStatement.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/DoStatement.java @@ -1,6 +1,10 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** + * A do statement. * @author Matthieu Casanova */ public class DoStatement extends Statement { @@ -11,10 +15,10 @@ public class DoStatement extends Statement { /** The action of the while. (it could be a block) */ public Statement action; - public DoStatement(Expression condition, - Statement action, - int sourceStart, - int sourceEnd) { + public DoStatement(final Expression condition, + final Statement action, + final int sourceStart, + final int sourceEnd) { super(sourceStart, sourceEnd); this.condition = condition; this.action = action; @@ -25,16 +29,49 @@ public class DoStatement extends Statement { * @param tab how many tabs (not used here * @return a String */ - public String toString(int tab) { + public String toString(final int tab) { final String s = tabString(tab); - final StringBuffer buff = new StringBuffer("do "); //$NON-NLS-1$ + final StringBuffer buff = new StringBuffer("do ");//$NON-NLS-1$ if (action == null) { buff.append(" {} ;"); //$NON-NLS-1$ } else { - buff.append("\n").append(action.toString(tab + 1)); //$NON-NLS-1$ + buff.append("\n").append(action.toString(tab + 1));//$NON-NLS-1$ } - buff.append(s).append(" while ("); - buff.append(condition.toStringExpression()).append(")"); //$NON-NLS-1$ + buff.append(s).append(" while (");//$NON-NLS-1$ + buff.append(condition.toStringExpression()).append(")");//$NON-NLS-1$ return buff.toString(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + final ArrayList list = new ArrayList(); + list.addAll(condition.getOutsideVariable()); // todo: check if unuseful + list.addAll(action.getOutsideVariable()); + return list; + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + final ArrayList list = new ArrayList(); + list.addAll(condition.getModifiedVariable()); + list.addAll(action.getModifiedVariable()); + return list; + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + final ArrayList list = new ArrayList(); + list.addAll(condition.getUsedVariable()); + list.addAll(action.getUsedVariable()); + return list; + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/EchoStatement.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/EchoStatement.java index 11f5ee0..c5f3e98 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/EchoStatement.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/EchoStatement.java @@ -1,6 +1,11 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** + * an echo statement. + * echo something; * @author Matthieu Casanova */ public class EchoStatement extends Statement { @@ -8,16 +13,16 @@ public class EchoStatement extends Statement { /** An array of expressions in this echo statement. */ public Expression[] expressions; - public EchoStatement (Expression[] expressions, int sourceStart) { + public EchoStatement (final Expression[] expressions, final int sourceStart) { super(sourceStart, expressions[expressions.length-1].sourceEnd); this.expressions = expressions; } public String toString() { - StringBuffer buff = new StringBuffer("echo "); + final StringBuffer buff = new StringBuffer("echo ");//$NON-NLS-1$ for (int i = 0; i < expressions.length; i++) { if (i != 0) { - buff.append(", "); + buff.append(", ");//$NON-NLS-1$ } buff.append(expressions[i].toStringExpression()); } @@ -29,7 +34,46 @@ public class EchoStatement extends Statement { * @param tab how many tabs (not used here * @return a String */ - public String toString(int tab) { - return tabString(tab) + toString(); + public String toString(final int tab) { + final String tabs = tabString(tab); + final String str = toString(); + final StringBuffer buff = new StringBuffer(tabs.length()+str.length()); + return buff.toString(); + } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < expressions.length; i++) { + list.addAll(expressions[i].getOutsideVariable()); + } + return list; + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < expressions.length; i++) { + list.addAll(expressions[i].getModifiedVariable()); + } + return list; + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < expressions.length; i++) { + list.addAll(expressions[i].getUsedVariable()); + } + return list; } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Else.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Else.java index d0e1ea6..302d650 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Else.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Else.java @@ -1,18 +1,40 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.ArrayList; +import java.util.List; + /** + * an else statement. + * it's else * @author Matthieu Casanova */ public class Else extends Statement { + /** the statements. */ public Statement[] statements; - public Else(Statement[] statements, int sourceStart, int sourceEnd) { + /** + * An else statement bad version ( : endif). + * @param statements the statements + * @param sourceStart the starting offset + * @param sourceEnd the ending offset + */ + public Else(final Statement[] statements, + final int sourceStart, + final int sourceEnd) { super(sourceStart, sourceEnd); this.statements = statements; } - public Else(Statement statement, int sourceStart, int sourceEnd) { + /** + * An else statement good version + * @param statement the statement (it could be a block) + * @param sourceStart the starting offset + * @param sourceEnd the ending offset + */ + public Else(final Statement statement, + final int sourceStart, + final int sourceEnd) { super(sourceStart, sourceEnd); this.statements = new Statement[1]; this.statements[0] = statement; @@ -23,13 +45,50 @@ public class Else extends Statement { * @param tab how many tabs (not used here * @return a String */ - public String toString(int tab) { + public String toString(final int tab) { final StringBuffer buff = new StringBuffer(tabString(tab)); - buff.append("else \n"); + buff.append("else \n");//$NON-NLS-1$ + Statement statement; for (int i = 0; i < statements.length; i++) { - Statement statement = statements[i]; - buff.append(statement.toString(tab + 1)).append('\n'); + statement = statements[i]; + buff.append(statement.toString(tab + 1)).append("\n");//$NON-NLS-1$ } return buff.toString(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < statements.length; i++) { + list.addAll(statements[i].getOutsideVariable()); + } + return list; + } + + /** + * get the modified variables. + * @return the variables from outside + */ + public List getModifiedVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < statements.length; i++) { + list.addAll(statements[i].getModifiedVariable()); + } + return list; + } + + /** + * Get the variables used. + * @return the variables from outside + */ + public List getUsedVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < statements.length; i++) { + list.addAll(statements[i].getUsedVariable()); + } + return list; + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ElseIf.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ElseIf.java index a6aff20..3602231 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ElseIf.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ElseIf.java @@ -1,5 +1,10 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import net.sourceforge.phpdt.internal.compiler.ast.declarations.VariableUsage; + +import java.util.List; +import java.util.ArrayList; + /** * An elseif statement. * @author Matthieu Casanova @@ -12,7 +17,7 @@ public class ElseIf extends Statement { /** The statements. */ public Statement[] statements; - public ElseIf(Expression condition, Statement[] statements, int sourceStart, int sourceEnd) { + public ElseIf(final Expression condition, final Statement[] statements, final int sourceStart, final int sourceEnd) { super(sourceStart, sourceEnd); this.condition = condition; this.statements = statements; @@ -23,15 +28,53 @@ public class ElseIf extends Statement { * @param tab how many tabs (not used here * @return a String */ - public String toString(int tab) { + public String toString(final int tab) { final StringBuffer buff = new StringBuffer(tabString(tab)); buff.append("elseif ("); buff.append(condition.toStringExpression()); buff.append(") \n"); for (int i = 0; i < statements.length; i++) { - Statement statement = statements[i]; - buff.append(statement.toString(tab+1)).append('\n'); + final Statement statement = statements[i]; + buff.append(statement.toString(tab + 1)).append('\n'); } return buff.toString(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < statements.length; i++) { + list.addAll(statements[i].getModifiedVariable()); + } + return list; + } + + /** + * get the modified variables. + * @return the variables modified + */ + public List getModifiedVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < statements.length; i++) { + list.addAll(statements[i].getModifiedVariable()); + } + list.addAll(condition.getModifiedVariable()); + return list; + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < statements.length; i++) { + list.addAll(statements[i].getUsedVariable()); + } + list.addAll(condition.getUsedVariable()); + return list; + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/EmptyStatement.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/EmptyStatement.java index 780c841..1585fc4 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/EmptyStatement.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/EmptyStatement.java @@ -1,16 +1,43 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** * An empty statement. * @author Matthieu Casanova */ public class EmptyStatement extends Statement { - public EmptyStatement(int sourceStart, int sourceEnd) { + public EmptyStatement(final int sourceStart, final int sourceEnd) { super(sourceStart, sourceEnd); } - public String toString(int tab) { + public String toString(final int tab) { return tabString(tab) + ";"; //$NON-NLS-1$ } + + /** + * Get the variables from outside (parameters, globals ...) + * @return an empty list + */ + public List getOutsideVariable() { + return new ArrayList(); + } + + /** + * get the modified variables. + * @return an empty list + */ + public List getModifiedVariable() { + return new ArrayList(); + } + + /** + * Get the variables used. + * @return an empty list + */ + public List getUsedVariable() { + return new ArrayList(); + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Expression.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Expression.java index b5b5947..d935982 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Expression.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Expression.java @@ -12,7 +12,7 @@ public abstract class Expression extends Statement { * @param sourceStart starting offset * @param sourceEnd ending offset */ - public Expression(int sourceStart, int sourceEnd) { + public Expression(final int sourceStart, final int sourceEnd) { super(sourceStart, sourceEnd); } @@ -21,7 +21,7 @@ public abstract class Expression extends Statement { * @param tab how many spaces before the expression * @return a string representing the expression */ - public String toString(int tab) { + public String toString(final int tab) { return tabString(tab) + toStringExpression(); } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/FalseLiteral.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/FalseLiteral.java index 8d63fb8..af7dd86 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/FalseLiteral.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/FalseLiteral.java @@ -1,5 +1,8 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** * @author Matthieu Casanova */ @@ -7,7 +10,7 @@ public class FalseLiteral extends MagicLiteral { public static final char[] source = {'f', 'a', 'l', 's', 'e'}; - public FalseLiteral(int sourceStart, int sourceEnd) { + public FalseLiteral(final int sourceStart, final int sourceEnd) { super(sourceStart, sourceEnd); } @@ -16,7 +19,7 @@ public class FalseLiteral extends MagicLiteral { * @return the expression */ public String toStringExpression() { - return "false"; + return "false";//$NON-NLS-1$ } public char[] source() { diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/FieldDeclaration.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/FieldDeclaration.java index 69b3616..4981987 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/FieldDeclaration.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/FieldDeclaration.java @@ -5,10 +5,13 @@ import net.sourceforge.phpdt.internal.ui.PHPUiImages; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.text.Position; +import java.util.List; +import java.util.ArrayList; + /** * A Field declaration. * This is a variable declaration for a php class - * In fact it's an array of VariableDeclaration, since a field could contains + * In fact it's an array of VariableUsage, since a field could contains * several vars : * var $toto,$tata; * @author Matthieu Casanova @@ -26,7 +29,10 @@ public class FieldDeclaration extends Statement implements Outlineable { * @param sourceStart the starting offset * @param sourceEnd the ending offset */ - public FieldDeclaration(VariableDeclaration[] vars, int sourceStart, int sourceEnd, Object parent) { + public FieldDeclaration(final VariableDeclaration[] vars, + final int sourceStart, + final int sourceEnd, + final Object parent) { super(sourceStart, sourceEnd); this.vars = vars; this.parent = parent; @@ -38,15 +44,14 @@ public class FieldDeclaration extends Statement implements Outlineable { * @param tab how many tabs (not used here * @return a String */ - public String toString(int tab) { + public String toString(final int tab) { final StringBuffer buff = new StringBuffer(tabString(tab)); buff.append("var ");//$NON-NLS-1$ for (int i = 0; i < vars.length; i++) { - VariableDeclaration var = vars[i]; if (i != 0) { - buff.append(',');//$NON-NLS-1$ + buff.append(",");//$NON-NLS-1$ } - buff.append(var.toStringExpression()); + buff.append(vars[i].toStringExpression()); } return buff.toString(); } @@ -66,4 +71,28 @@ public class FieldDeclaration extends Statement implements Outlineable { public Position getPosition() { return position; } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + return new ArrayList(); + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + return new ArrayList(); + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + return new ArrayList(); + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ForStatement.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ForStatement.java index f808542..212d451 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ForStatement.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ForStatement.java @@ -1,5 +1,8 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** * A For statement. * for(initializations;condition;increments) action @@ -17,12 +20,12 @@ public class ForStatement extends Statement { public Statement action; - public ForStatement(Expression[] initializations, - Expression condition, - Expression[] increments, - Statement action, - int sourceStart, - int sourceEnd) { + public ForStatement(final Expression[] initializations, + final Expression condition, + final Expression[] increments, + final Statement action, + final int sourceStart, + final int sourceEnd) { super(sourceStart, sourceEnd); this.initializations = initializations; this.condition = condition; @@ -30,7 +33,7 @@ public class ForStatement extends Statement { this.action = action; } - public String toString(int tab) { + public String toString(final int tab) { final StringBuffer buff = new StringBuffer(tabString(tab)); buff.append("for ("); //$NON-NLS-1$ //inits @@ -41,12 +44,12 @@ public class ForStatement extends Statement { buff.append(" , "); //$NON-NLS-1$ } } - buff.append( "; "); //$NON-NLS-1$ + buff.append("; "); //$NON-NLS-1$ //cond - if (condition != null) { + if (condition != null) { buff.append(condition.toStringExpression()); } - buff.append( "; "); //$NON-NLS-1$ + buff.append("; "); //$NON-NLS-1$ //updates if (increments != null) { for (int i = 0; i < increments.length; i++) { @@ -64,4 +67,55 @@ public class ForStatement extends Statement { buff.append(action.toString(tab + 1)); //$NON-NLS-1$ return buff.toString(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + final ArrayList list = new ArrayList(); + list.addAll(condition.getOutsideVariable()); + list.addAll(action.getOutsideVariable()); + for (int i = 0; i < initializations.length; i++) { + list.addAll(initializations[i].getOutsideVariable()); + } + for (int i = 0; i < increments.length; i++) { + list.addAll(increments[i].getOutsideVariable()); + } + return list; + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + final ArrayList list = new ArrayList(); + list.addAll(condition.getModifiedVariable()); + list.addAll(action.getModifiedVariable()); + for (int i = 0; i < initializations.length; i++) { + list.addAll(initializations[i].getModifiedVariable()); + } + for (int i = 0; i < increments.length; i++) { + list.addAll(increments[i].getModifiedVariable()); + } + return list; + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + final ArrayList list = new ArrayList(); + list.addAll(condition.getUsedVariable()); + list.addAll(action.getUsedVariable()); + for (int i = 0; i < initializations.length; i++) { + list.addAll(initializations[i].getUsedVariable()); + } + for (int i = 0; i < increments.length; i++) { + list.addAll(increments[i].getUsedVariable()); + } + return list; + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ForeachStatement.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ForeachStatement.java index be4229a..827c2aa 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ForeachStatement.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ForeachStatement.java @@ -1,5 +1,8 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** * @author Matthieu Casanova */ @@ -9,11 +12,11 @@ public class ForeachStatement extends Statement { public Expression variable; public Statement statement; - public ForeachStatement(Expression expression, - Expression variable, - Statement statement, - int sourceStart, - int sourceEnd) { + public ForeachStatement(final Expression expression, + final Expression variable, + final Statement statement, + final int sourceStart, + final int sourceEnd) { super(sourceStart, sourceEnd); this.expression = expression; this.variable = variable; @@ -25,7 +28,7 @@ public class ForeachStatement extends Statement { * @param tab how many tabs (not used here * @return a String */ - public String toString(int tab) { + public String toString(final int tab) { final StringBuffer buff = new StringBuffer(tabString(tab)); buff.append("foreach ("); buff.append(expression.toStringExpression()); @@ -36,4 +39,39 @@ public class ForeachStatement extends Statement { buff.append("\n}"); return buff.toString(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + final ArrayList list = new ArrayList(); + list.addAll(expression.getOutsideVariable()); + list.addAll(variable.getOutsideVariable()); + list.addAll(statement.getOutsideVariable()); + return list; + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + final ArrayList list = new ArrayList(); + list.addAll(expression.getModifiedVariable()); + list.addAll(variable.getModifiedVariable()); + list.addAll(statement.getModifiedVariable()); + return list; + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + final ArrayList list = new ArrayList(); + list.addAll(expression.getUsedVariable()); + list.addAll(statement.getUsedVariable()); + return list; + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/FunctionCall.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/FunctionCall.java index c91788d..cb0b5dd 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/FunctionCall.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/FunctionCall.java @@ -1,5 +1,8 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** * @author Matthieu Casanova */ @@ -8,9 +11,9 @@ public class FunctionCall extends AbstractSuffixExpression { public Expression prefix; public Expression[] args; - public FunctionCall(Expression prefix, - Expression[] args, - int sourceEnd) { + public FunctionCall(final Expression prefix, + final Expression[] args, + final int sourceEnd) { super(prefix.sourceStart, sourceEnd); this.prefix = prefix; this.args = args; @@ -25,7 +28,7 @@ public class FunctionCall extends AbstractSuffixExpression { buff.append('('); if (args != null) { for (int i = 0; i < args.length; i++) { - Expression arg = args[i]; + final Expression arg = args[i]; if (i != 0) { buff.append(','); } @@ -35,4 +38,37 @@ public class FunctionCall extends AbstractSuffixExpression { buff.append(')'); return buff.toString(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + return new ArrayList(); + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < args.length; i++) { + list.addAll(args[i].getModifiedVariable()); + } + return list; + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + final ArrayList list = new ArrayList(); + list.addAll(prefix.getUsedVariable()); + for (int i = 0; i < args.length; i++) { + list.addAll(args[i].getUsedVariable()); + } + return list; + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/GlobalStatement.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/GlobalStatement.java index 6bb61fe..d50bafe 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/GlobalStatement.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/GlobalStatement.java @@ -1,10 +1,14 @@ package net.sourceforge.phpdt.internal.compiler.ast; import net.sourceforge.phpdt.internal.compiler.parser.Outlineable; +import net.sourceforge.phpdt.internal.compiler.ast.declarations.VariableUsage; import net.sourceforge.phpdt.internal.ui.PHPUiImages; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.text.Position; +import java.util.List; +import java.util.ArrayList; + /** * A GlobalStatement statement in php. * @author Matthieu Casanova @@ -18,7 +22,10 @@ public class GlobalStatement extends Statement implements Outlineable { private Position position; - public GlobalStatement(Object parent, String[] variables, int sourceStart, int sourceEnd) { + public GlobalStatement(final Object parent, + final String[] variables, + final int sourceStart, + final int sourceEnd) { super(sourceStart, sourceEnd); this.variables = variables; this.parent = parent; @@ -26,17 +33,17 @@ public class GlobalStatement extends Statement implements Outlineable { } public String toString() { - StringBuffer buff = new StringBuffer("global "); + final StringBuffer buff = new StringBuffer("global ");//$NON-NLS-1$ for (int i = 0; i < variables.length; i++) { if (i != 0) { - buff.append(", "); + buff.append(", ");//$NON-NLS-1$ } buff.append(variables[i]); } return buff.toString(); } - public String toString(int tab) { + public String toString(final int tab) { return tabString(tab) + toString(); } @@ -55,4 +62,32 @@ public class GlobalStatement extends Statement implements Outlineable { public Position getPosition() { return position; } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + final ArrayList list = new ArrayList(variables.length); + for (int i = 0; i < variables.length; i++) { + list.add(new VariableUsage(variables[i],sourceStart)); + } + return list; + } + + /** + * get the modified variables. + * @return the variables modified + */ + public List getModifiedVariable() { + return new ArrayList(); + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + return new ArrayList(); + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/HTMLBlock.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/HTMLBlock.java index 4dae9eb..27d93fa 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/HTMLBlock.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/HTMLBlock.java @@ -1,5 +1,8 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** * @author Matthieu Casanova */ @@ -7,7 +10,7 @@ public class HTMLBlock extends Statement { public AstNode[] nodes; - public HTMLBlock(AstNode[] nodes) { + public HTMLBlock(final AstNode[] nodes) { super(nodes[0].sourceStart, nodes[nodes.length-1].sourceEnd); this.nodes = nodes; } @@ -17,14 +20,37 @@ public class HTMLBlock extends Statement { * @param tab how many tabs (not used here * @return a String */ - public String toString(int tab) { + public String toString(final int tab) { final StringBuffer buff = new StringBuffer(tabString(tab)); buff.append("?>"); for (int i = 0; i < nodes.length; i++) { - AstNode node = nodes[i]; - buff.append(node.toString(tab +1)); + buff.append(nodes[i].toString(tab +1)); } buff.append(" * @author Matthieu Casanova */ public class PHPEchoBlock extends AstNode { + /** the expression. */ public Expression expr; - public PHPEchoBlock(Expression expr,int sourceStart, int sourceEnd) { + /** + * Create a new php echo block. + * @param expr the expression + * @param sourceStart the starting offset + * @param sourceEnd the ending offset + */ + public PHPEchoBlock(final Expression expr, + final int sourceStart, + final int sourceEnd) { super(sourceStart, sourceEnd); this.expr = expr; } @@ -17,11 +33,40 @@ public class PHPEchoBlock extends AstNode { * @param tab how many tabs (not used here * @return a String */ - public String toString(int tab) { - final StringBuffer buff = new StringBuffer(tabString(tab)); - buff.append(""); + public String toString(final int tab) { + final String tabs = tabString(tab); + final String expression = expr.toStringExpression(); + final StringBuffer buff = new StringBuffer(tabs.length() + + expression.length() + + 5); + buff.append(tabs); + buff.append("");//$NON-NLS-1$ return buff.toString(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return an empty list + */ + public List getOutsideVariable() { + return new ArrayList(); + } + + /** + * get the modified variables. + * @return an empty list + */ + public List getModifiedVariable() { + return new ArrayList(); + } + + /** + * Get the variables used. + * @return the used variables are the used variables from the expression + */ + public List getUsedVariable() { + return expr.getUsedVariable(); + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/PostfixedUnaryExpression.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/PostfixedUnaryExpression.java index d95e08a..a358e25 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/PostfixedUnaryExpression.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/PostfixedUnaryExpression.java @@ -5,12 +5,12 @@ package net.sourceforge.phpdt.internal.compiler.ast; */ public class PostfixedUnaryExpression extends UnaryExpression { - public PostfixedUnaryExpression(Expression expression, int operator, int sourceEnd) { + public PostfixedUnaryExpression(final Expression expression, final int operator, final int sourceEnd) { super(expression, operator, expression.sourceStart, sourceEnd); } public String toStringExpression() { - StringBuffer buff = new StringBuffer(expression.toStringExpression()); + final StringBuffer buff = new StringBuffer(expression.toStringExpression()); buff.append(operatorToString()); return buff.toString(); } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/PrefixedUnaryExpression.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/PrefixedUnaryExpression.java index 318d2c3..966ea88 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/PrefixedUnaryExpression.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/PrefixedUnaryExpression.java @@ -5,12 +5,12 @@ package net.sourceforge.phpdt.internal.compiler.ast; */ public class PrefixedUnaryExpression extends UnaryExpression { - public PrefixedUnaryExpression(Expression expression, int operator, int sourceStart) { + public PrefixedUnaryExpression(final Expression expression, final int operator, final int sourceStart) { super(expression, operator, sourceStart, expression.sourceEnd); } public String toStringExpression() { - StringBuffer buff = new StringBuffer(operatorToString()); + final StringBuffer buff = new StringBuffer(operatorToString()); buff.append(expression.toStringExpression()); return buff.toString(); } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/PrintExpression.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/PrintExpression.java index 5f6f43e..86d5d7e 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/PrintExpression.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/PrintExpression.java @@ -1,5 +1,8 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** * @author Matthieu Casanova */ @@ -7,7 +10,7 @@ public class PrintExpression extends Expression { public Expression expression; - public PrintExpression(Expression expression, int sourceStart, int sourceEnd) { + public PrintExpression(final Expression expression, final int sourceStart, final int sourceEnd) { super(sourceStart, sourceEnd); this.expression = expression; } @@ -19,4 +22,28 @@ public class PrintExpression extends Expression { public String toStringExpression() { return "print " + expression.toStringExpression(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + return expression.getOutsideVariable(); + } + + /** + * get the modified variables. + * @return the variables from we change value + */ + public List getModifiedVariable() { + return expression.getModifiedVariable(); + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + return expression.getUsedVariable(); + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ReturnStatement.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ReturnStatement.java index 85d1867..a30be75 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ReturnStatement.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/ReturnStatement.java @@ -1,5 +1,10 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import net.sourceforge.phpdt.internal.compiler.ast.declarations.VariableUsage; + +import java.util.List; +import java.util.ArrayList; + /** * A return statement. * @author Matthieu Casanova @@ -8,16 +13,40 @@ public class ReturnStatement extends Statement { public Expression expression; - public ReturnStatement(Expression expression, int sourceStart, int sourceEnd) { + public ReturnStatement(final Expression expression, final int sourceStart, final int sourceEnd) { super(sourceStart, sourceEnd); this.expression = expression; } - public String toString(int tab) { + public String toString(final int tab) { final String s = tabString(tab); if (expression == null) { return s + "return";//$NON-NLS-1$ } return s + "return " + expression.toStringExpression();//$NON-NLS-1$ } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + return new ArrayList(); + } + + /** + * get the modified variables. + * @return the variables modified + */ + public List getModifiedVariable() { + return expression.getModifiedVariable(); + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + return expression.getUsedVariable(); + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Statement.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Statement.java index a6afa57..bb6e49f 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Statement.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Statement.java @@ -8,14 +8,19 @@ package net.sourceforge.phpdt.internal.compiler.ast; public abstract class Statement extends AstNode { /** - * Create a node giving starting and ending offset + * Create a node giving starting and ending offset. * @param sourceStart starting offset * @param sourceEnd ending offset */ - public Statement(int sourceStart, int sourceEnd) { + public Statement(final int sourceStart, + final int sourceEnd) { super(sourceStart, sourceEnd); } + /** + * Tell if the block is empty. + * @return a statement is not empty by default + */ public boolean isEmptyBlock() { return false; } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/StaticStatement.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/StaticStatement.java index b600511..9a9e409 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/StaticStatement.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/StaticStatement.java @@ -1,5 +1,10 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import net.sourceforge.phpdt.internal.compiler.ast.declarations.VariableUsage; + +import java.util.List; +import java.util.ArrayList; + /** * A GlobalStatement statement in php. * @author Matthieu Casanova @@ -9,13 +14,13 @@ public class StaticStatement extends Statement { /** An array of the variables called by this global statement. */ public String[] variables; - public StaticStatement(String[] variables, int sourceStart, int sourceEnd) { + public StaticStatement(final String[] variables, final int sourceStart, final int sourceEnd) { super(sourceStart, sourceEnd); this.variables = variables; } public String toString() { - StringBuffer buff = new StringBuffer("static "); + final StringBuffer buff = new StringBuffer("static "); for (int i = 0; i < variables.length; i++) { if (i != 0) { buff.append(", "); @@ -25,7 +30,35 @@ public class StaticStatement extends Statement { return buff.toString(); } - public String toString(int tab) { + public String toString(final int tab) { return tabString(tab) + toString(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + final ArrayList list = new ArrayList(variables.length); + for (int i = 0; i < variables.length; i++) { + list.add(new VariableUsage(variables[i], sourceStart)); + } + return list; + } + + /** + * get the modified variables. + * @return the variables modified + */ + public List getModifiedVariable() { + return new ArrayList(); + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + return new ArrayList(); + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/StringLiteral.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/StringLiteral.java index aced1b6..ca22a4c 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/StringLiteral.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/StringLiteral.java @@ -10,6 +10,9 @@ ******************************************************************************/ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + //import net.sourceforge.phpdt.internal.compiler.IAbstractSyntaxTreeVisitor; //import net.sourceforge.phpdt.internal.compiler.codegen.CodeStream; //import net.sourceforge.phpdt.internal.compiler.impl.Constant; @@ -19,7 +22,7 @@ package net.sourceforge.phpdt.internal.compiler.ast; public class StringLiteral extends Literal { char[] source; - public StringLiteral(char[] token, int s) { + public StringLiteral(final char[] token, final int s) { super(s, s + token.length); source = token; } @@ -31,12 +34,12 @@ public class StringLiteral extends Literal { * @param e sourceend * @deprecated */ - public StringLiteral(char[] token, int s, int e) { + public StringLiteral(final char[] token, final int s, final int e) { super(s, e); source = token; } - public StringLiteral(int s, int e) { + public StringLiteral(final int s, final int e) { super(s, e); } @@ -51,42 +54,42 @@ public class StringLiteral extends Literal { * Return the expression as String. * @return the expression */ - /* public String toStringExpression() { - // handle some special char..... - StringBuffer result = new StringBuffer("\""); //$NON-NLS-1$ - for (int i = 0; i < source.length; i++) { - switch (source[i]) { - case '\b': - result.append("\\b"); //$NON-NLS-1$ - break; - case '\t': - result.append("\\t"); //$NON-NLS-1$ - break; - case '\n': - result.append("\\n"); //$NON-NLS-1$ - break; - case '\f': - result.append("\\f"); //$NON-NLS-1$ - break; - case '\r': - result.append("\\r"); //$NON-NLS-1$ - break; - case '\"': - result.append("\\\""); //$NON-NLS-1$ - break; - case '\'': - result.append("\\'"); //$NON-NLS-1$ - break; - case '\\': //take care not to display the escape as a potential real char - result.append("\\\\"); //$NON-NLS-1$ - break; - default : - result.append(source[i]); - } - } - result.append("\""); //$NON-NLS-1$ - return result.toString(); - } */ + /* public String toStringExpression() { + // handle some special char..... + StringBuffer result = new StringBuffer("\""); //$NON-NLS-1$ + for (int i = 0; i < source.length; i++) { + switch (source[i]) { + case '\b': + result.append("\\b"); //$NON-NLS-1$ + break; + case '\t': + result.append("\\t"); //$NON-NLS-1$ + break; + case '\n': + result.append("\\n"); //$NON-NLS-1$ + break; + case '\f': + result.append("\\f"); //$NON-NLS-1$ + break; + case '\r': + result.append("\\r"); //$NON-NLS-1$ + break; + case '\"': + result.append("\\\""); //$NON-NLS-1$ + break; + case '\'': + result.append("\\'"); //$NON-NLS-1$ + break; + case '\\': //take care not to display the escape as a potential real char + result.append("\\\\"); //$NON-NLS-1$ + break; + default : + result.append(source[i]); + } + } + result.append("\""); //$NON-NLS-1$ + return result.toString(); + } */ /** * Return the expression as String. diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/SwitchStatement.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/SwitchStatement.java index c13a386..e582ed8 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/SwitchStatement.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/SwitchStatement.java @@ -1,5 +1,10 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import net.sourceforge.phpdt.internal.compiler.ast.declarations.VariableUsage; + +import java.util.List; +import java.util.ArrayList; + /** * @author Matthieu Casanova */ @@ -8,10 +13,10 @@ public class SwitchStatement extends Statement { public Expression variable; public AbstractCase[] cases; - public SwitchStatement(Expression variable, - AbstractCase[] cases, - int sourceStart, - int sourceEnd) { + public SwitchStatement(final Expression variable, + final AbstractCase[] cases, + final int sourceStart, + final int sourceEnd) { super(sourceStart, sourceEnd); this.variable = variable; this.cases = cases; @@ -22,15 +27,53 @@ public class SwitchStatement extends Statement { * @param tab how many tabs (not used here * @return a String */ - public String toString(int tab) { + public String toString(final int tab) { final StringBuffer buff = new StringBuffer(tabString(tab)); buff.append("switch (").append(variable.toStringExpression()).append(") {\n"); for (int i = 0; i < cases.length; i++) { - AbstractCase cas = cases[i]; - buff.append(cas.toString(tab +1)); + final AbstractCase cas = cases[i]; + buff.append(cas.toString(tab + 1)); buff.append('\n'); } buff.append('}'); return buff.toString(); } + + /** + * Get the variables from outside (parameters, globals ...) + * @return the variables from outside + */ + public List getOutsideVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < cases.length; i++) { + list.addAll(cases[i].getOutsideVariable()); + } + return list; + } + + /** + * get the modified variables. + * @return the variables modified + */ + public List getModifiedVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < cases.length; i++) { + list.addAll(cases[i].getModifiedVariable()); + } + list.addAll(variable.getModifiedVariable()); + return list; + } + + /** + * Get the variables used. + * @return the variables used + */ + public List getUsedVariable() { + final ArrayList list = new ArrayList(); + for (int i = 0; i < cases.length; i++) { + list.addAll(cases[i].getUsedVariable()); + } + list.addAll(variable.getUsedVariable()); + return list; + } } diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/TrueLiteral.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/TrueLiteral.java index adb4b09..efc37a7 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/TrueLiteral.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/TrueLiteral.java @@ -1,13 +1,17 @@ package net.sourceforge.phpdt.internal.compiler.ast; +import java.util.List; +import java.util.ArrayList; + /** + * the true literal. * @author Matthieu Casanova */ public class TrueLiteral extends MagicLiteral { public static final char[] source = {'t', 'r', 'u', 'e'}; - public TrueLiteral(int sourceStart, int sourceEnd) { + public TrueLiteral(final int sourceStart, final int sourceEnd) { super(sourceStart, sourceEnd); } @@ -22,4 +26,8 @@ public class TrueLiteral extends MagicLiteral { public String toStringExpression() { return "true";//$NON-NLS-1$ } + + public String toString() { + return "true";//$NON-NLS-1$ + } } -- 1.7.1