aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast/StatementBlockNode.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/StatementBlockNode.java')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/StatementBlockNode.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/StatementBlockNode.java b/src/main/java/org/zwobble/couscous/ast/StatementBlockNode.java
new file mode 100644
index 0000000..0c24295
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/ast/StatementBlockNode.java
@@ -0,0 +1,51 @@
+package org.zwobble.couscous.ast;
+
+import org.zwobble.couscous.ast.visitors.NodeTransformer;
+
+import java.util.List;
+
+public class StatementBlockNode implements StatementNode {
+ private final List<StatementNode> statements;
+
+ public StatementBlockNode(List<StatementNode> statements) {
+ this.statements = statements;
+ }
+
+ @Override
+ public int type() {
+ return NodeTypes.STATEMENT_BLOCK;
+ }
+
+ @Override
+ public Iterable<? extends Node> childNodes() {
+ return statements;
+ }
+
+ @Override
+ public StatementNode transformSubtree(NodeTransformer transformer) {
+ return new StatementBlockNode(transformer.transformStatements(statements));
+ }
+
+ @Override
+ public String toString() {
+ return "StatementBlockNode(" +
+ "statements=" + statements +
+ ')';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ StatementBlockNode that = (StatementBlockNode) o;
+
+ return statements.equals(that.statements);
+
+ }
+
+ @Override
+ public int hashCode() {
+ return statements.hashCode();
+ }
+}