From 8a7cb643ac9b0e895123c176803af15b75f90cf1 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 14 Nov 2015 14:30:50 +0000 Subject: Parse while loops --- .../java/org/zwobble/couscous/ast/WhileNode.java | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/main/java/org/zwobble/couscous/ast/WhileNode.java (limited to 'src/main/java/org/zwobble/couscous/ast/WhileNode.java') diff --git a/src/main/java/org/zwobble/couscous/ast/WhileNode.java b/src/main/java/org/zwobble/couscous/ast/WhileNode.java new file mode 100644 index 0000000..0a67aef --- /dev/null +++ b/src/main/java/org/zwobble/couscous/ast/WhileNode.java @@ -0,0 +1,55 @@ +package org.zwobble.couscous.ast; + +import com.google.common.base.Objects; +import org.zwobble.couscous.ast.visitors.StatementNodeMapper; + +import java.util.List; + +public class WhileNode implements StatementNode { + public static WhileNode whileLoop(ExpressionNode condition, List body) { + return new WhileNode(condition, body); + } + + private final ExpressionNode condition; + private final List body; + + public WhileNode(ExpressionNode condition, List body) { + this.condition = condition; + this.body = body; + } + + public ExpressionNode getCondition() { + return condition; + } + + public List getBody() { + return body; + } + + @Override + public T accept(StatementNodeMapper visitor) { + return visitor.visit(this); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + WhileNode whileNode = (WhileNode) o; + return Objects.equal(condition, whileNode.condition) && + Objects.equal(body, whileNode.body); + } + + @Override + public int hashCode() { + return Objects.hashCode(condition, body); + } + + @Override + public String toString() { + return "WhileNode(" + + "condition=" + condition + + ", body=" + body + + ')'; + } +} -- cgit v1.2.3