/src/org/ooc/frontend/model/CommaSequence.java

http://github.com/nddrylliog/ooc · Java · 58 lines · 45 code · 13 blank · 0 comment · 4 complexity · 10b27eaa3969ab36ffe34e06265c16be MD5 · raw file

  1. package org.ooc.frontend.model;
  2. import java.io.IOException;
  3. import org.ooc.frontend.Visitor;
  4. import org.ooc.frontend.model.tokens.Token;
  5. public class CommaSequence extends Expression {
  6. NodeList<Statement> body;
  7. public Type getType() {
  8. return body.isEmpty() ? null : ((Expression) body.getLast()).getType();
  9. }
  10. public CommaSequence(Token startToken) {
  11. super(startToken);
  12. body = new NodeList<Statement>();
  13. }
  14. public NodeList<Statement> getBody() {
  15. return body;
  16. }
  17. @Override
  18. public boolean replace(Node oldie, Node kiddo) {
  19. return body.replace(oldie, kiddo);
  20. }
  21. public void accept(Visitor visitor) throws IOException {
  22. visitor.visit(this);
  23. }
  24. public void acceptChildren(Visitor visitor) throws IOException {
  25. for (Statement stmt : body) {
  26. stmt.accept(visitor);
  27. }
  28. }
  29. public boolean hasChildren() {
  30. return !body.isEmpty();
  31. }
  32. @Override
  33. public String toString() {
  34. StringBuilder sb = new StringBuilder();
  35. sb.append('(');
  36. boolean isFirst = true;
  37. for(Statement stmt : body) {
  38. if(isFirst) isFirst = false;
  39. else sb.append(", ");
  40. sb.append(stmt.toString());
  41. }
  42. sb.append(')');
  43. return sb.toString();
  44. }
  45. }