/plugins/PHPParser/branches/PHPParser-1.3.1/src/net/sourceforge/phpdt/internal/compiler/ast/Else.java

# · Java · 142 lines · 86 code · 12 blank · 44 comment · 7 complexity · 0491157963935c8ab8670a1699816d67 MD5 · raw file

  1. package net.sourceforge.phpdt.internal.compiler.ast;
  2. import gatchan.phpparser.parser.PHPParser;
  3. import net.sourceforge.phpdt.internal.compiler.ast.declarations.VariableUsage;
  4. import java.util.List;
  5. /**
  6. * an else statement.
  7. * it's else
  8. *
  9. * @author Matthieu Casanova
  10. */
  11. public class Else extends Statement
  12. {
  13. /**
  14. * the statements.
  15. */
  16. private final Statement[] statements;
  17. /**
  18. * An else statement bad version ( : endif).
  19. *
  20. * @param statements the statements
  21. * @param sourceStart the starting offset
  22. * @param sourceEnd the ending offset
  23. */
  24. public Else(Statement[] statements,
  25. int sourceStart,
  26. int sourceEnd,
  27. int beginLine,
  28. int endLine,
  29. int beginColumn,
  30. int endColumn)
  31. {
  32. super(sourceStart, sourceEnd, beginLine, endLine, beginColumn, endColumn);
  33. this.statements = statements;
  34. }
  35. /**
  36. * An else statement good version
  37. *
  38. * @param statement the statement (it could be a block)
  39. * @param sourceStart the starting offset
  40. * @param sourceEnd the ending offset
  41. */
  42. public Else(Statement statement,
  43. int sourceStart,
  44. int sourceEnd,
  45. int beginLine,
  46. int endLine,
  47. int beginColumn,
  48. int endColumn)
  49. {
  50. super(sourceStart, sourceEnd, beginLine, endLine, beginColumn, endColumn);
  51. statements = new Statement[1];
  52. statements[0] = statement;
  53. }
  54. /**
  55. * Return the object into String.
  56. *
  57. * @param tab how many tabs (not used here
  58. * @return a String
  59. */
  60. @Override
  61. public String toString(int tab)
  62. {
  63. StringBuilder buff = new StringBuilder(tabString(tab));
  64. buff.append("else \n");
  65. Statement statement;
  66. for (int i = 0; i < statements.length; i++)
  67. {
  68. statement = statements[i];
  69. buff.append(statement.toString(tab + 1)).append('\n');
  70. }
  71. return buff.toString();
  72. }
  73. /**
  74. * Get the variables from outside (parameters, globals ...)
  75. *
  76. * @param list the list where we will put variables
  77. */
  78. @Override
  79. public void getOutsideVariable(List<VariableUsage> list)
  80. {
  81. for (int i = 0; i < statements.length; i++)
  82. {
  83. statements[i].getOutsideVariable(list);
  84. }
  85. }
  86. /**
  87. * get the modified variables.
  88. *
  89. * @param list the list where we will put variables
  90. */
  91. @Override
  92. public void getModifiedVariable(List<VariableUsage> list)
  93. {
  94. for (int i = 0; i < statements.length; i++)
  95. {
  96. statements[i].getModifiedVariable(list);
  97. }
  98. }
  99. /**
  100. * Get the variables used.
  101. *
  102. * @param list the list where we will put variables
  103. */
  104. @Override
  105. public void getUsedVariable(List<VariableUsage> list)
  106. {
  107. for (int i = 0; i < statements.length; i++)
  108. {
  109. statements[i].getUsedVariable(list);
  110. }
  111. }
  112. @Override
  113. public Expression expressionAt(int line, int column)
  114. {
  115. for (int i = 0; i < statements.length; i++)
  116. {
  117. Statement statement = statements[i];
  118. if (statement.isAt(line, column)) return statement.expressionAt(line, column);
  119. }
  120. return null;
  121. }
  122. @Override
  123. public void analyzeCode(PHPParser parser)
  124. {
  125. for (int i = 0; i < statements.length; i++)
  126. {
  127. statements[i].analyzeCode(parser);
  128. }
  129. }
  130. }