diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-11-14 14:30:50 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-11-14 14:30:50 +0000 |
| commit | 8a7cb643ac9b0e895123c176803af15b75f90cf1 (patch) | |
| tree | 046f0b48f76734451fb0c8a39236212e6108bf6f /src/main/java/org/zwobble/couscous/ast/visitors | |
| parent | f398933835e7fa7a80b0abd7feda6790370804c8 (diff) | |
Parse while loops
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/visitors')
4 files changed, 16 insertions, 53 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitor.java b/src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitor.java index ce6bb52..8d42f5c 100644 --- a/src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitor.java +++ b/src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitor.java @@ -1,21 +1,6 @@ package org.zwobble.couscous.ast.visitors; -import org.zwobble.couscous.ast.AssignmentNode; -import org.zwobble.couscous.ast.ClassNode; -import org.zwobble.couscous.ast.ConstructorCallNode; -import org.zwobble.couscous.ast.ConstructorNode; -import org.zwobble.couscous.ast.ExpressionStatementNode; -import org.zwobble.couscous.ast.FieldAccessNode; -import org.zwobble.couscous.ast.IfStatementNode; -import org.zwobble.couscous.ast.LiteralNode; -import org.zwobble.couscous.ast.LocalVariableDeclarationNode; -import org.zwobble.couscous.ast.MethodCallNode; -import org.zwobble.couscous.ast.MethodNode; -import org.zwobble.couscous.ast.ReturnNode; -import org.zwobble.couscous.ast.StaticMethodCallNode; -import org.zwobble.couscous.ast.TernaryConditionalNode; -import org.zwobble.couscous.ast.ThisReferenceNode; -import org.zwobble.couscous.ast.VariableReferenceNode; +import org.zwobble.couscous.ast.*; public interface NodeVisitor { void visit(LiteralNode literal); @@ -32,6 +17,7 @@ public interface NodeVisitor { void visit(ExpressionStatementNode expressionStatement); void visit(LocalVariableDeclarationNode localVariableDeclaration); void visit(IfStatementNode ifStatement); + void visit(WhileNode whileLoop); void visit(ClassNode classNode); void visit(MethodNode methodNode); diff --git a/src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitorWithEmptyDefaults.java b/src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitorWithEmptyDefaults.java index fe57a28..c8dd2cf 100644 --- a/src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitorWithEmptyDefaults.java +++ b/src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitorWithEmptyDefaults.java @@ -1,21 +1,6 @@ package org.zwobble.couscous.ast.visitors; -import org.zwobble.couscous.ast.AssignmentNode; -import org.zwobble.couscous.ast.ClassNode; -import org.zwobble.couscous.ast.ConstructorCallNode; -import org.zwobble.couscous.ast.ConstructorNode; -import org.zwobble.couscous.ast.ExpressionStatementNode; -import org.zwobble.couscous.ast.FieldAccessNode; -import org.zwobble.couscous.ast.IfStatementNode; -import org.zwobble.couscous.ast.LiteralNode; -import org.zwobble.couscous.ast.LocalVariableDeclarationNode; -import org.zwobble.couscous.ast.MethodCallNode; -import org.zwobble.couscous.ast.MethodNode; -import org.zwobble.couscous.ast.ReturnNode; -import org.zwobble.couscous.ast.StaticMethodCallNode; -import org.zwobble.couscous.ast.TernaryConditionalNode; -import org.zwobble.couscous.ast.ThisReferenceNode; -import org.zwobble.couscous.ast.VariableReferenceNode; +import org.zwobble.couscous.ast.*; public interface NodeVisitorWithEmptyDefaults extends NodeVisitor { @Override @@ -69,6 +54,10 @@ public interface NodeVisitorWithEmptyDefaults extends NodeVisitor { @Override default void visit(IfStatementNode ifStatement) { } + + @Override + default void visit(WhileNode whileLoop) { + } @Override default void visit(ClassNode classNode) { diff --git a/src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitors.java b/src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitors.java index 1bcc226..78a8254 100644 --- a/src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitors.java +++ b/src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitors.java @@ -2,23 +2,7 @@ package org.zwobble.couscous.ast.visitors; import java.util.List; -import org.zwobble.couscous.ast.AssignmentNode; -import org.zwobble.couscous.ast.ClassNode; -import org.zwobble.couscous.ast.ConstructorCallNode; -import org.zwobble.couscous.ast.ConstructorNode; -import org.zwobble.couscous.ast.ExpressionStatementNode; -import org.zwobble.couscous.ast.FieldAccessNode; -import org.zwobble.couscous.ast.IfStatementNode; -import org.zwobble.couscous.ast.LiteralNode; -import org.zwobble.couscous.ast.LocalVariableDeclarationNode; -import org.zwobble.couscous.ast.MethodCallNode; -import org.zwobble.couscous.ast.MethodNode; -import org.zwobble.couscous.ast.Node; -import org.zwobble.couscous.ast.ReturnNode; -import org.zwobble.couscous.ast.StaticMethodCallNode; -import org.zwobble.couscous.ast.TernaryConditionalNode; -import org.zwobble.couscous.ast.ThisReferenceNode; -import org.zwobble.couscous.ast.VariableReferenceNode; +import org.zwobble.couscous.ast.*; public class NodeVisitors { public static void visitAll(Node node, NodeVisitor visitor) { @@ -103,6 +87,12 @@ public class NodeVisitors { } @Override + public void visit(WhileNode whileLoop) { + whileLoop.getCondition().accept(visitor); + visitAll(whileLoop.getBody()); + } + + @Override public void visit(ClassNode classNode) { visitor.visit(classNode); classNode.getConstructor().accept(this); diff --git a/src/main/java/org/zwobble/couscous/ast/visitors/StatementNodeMapper.java b/src/main/java/org/zwobble/couscous/ast/visitors/StatementNodeMapper.java index fe639bd..33fbbd3 100644 --- a/src/main/java/org/zwobble/couscous/ast/visitors/StatementNodeMapper.java +++ b/src/main/java/org/zwobble/couscous/ast/visitors/StatementNodeMapper.java @@ -1,13 +1,11 @@ package org.zwobble.couscous.ast.visitors; -import org.zwobble.couscous.ast.ExpressionStatementNode; -import org.zwobble.couscous.ast.IfStatementNode; -import org.zwobble.couscous.ast.LocalVariableDeclarationNode; -import org.zwobble.couscous.ast.ReturnNode; +import org.zwobble.couscous.ast.*; public interface StatementNodeMapper<T> { T visit(ReturnNode returnNode); T visit(ExpressionStatementNode expressionStatement); T visit(LocalVariableDeclarationNode localVariableDeclaration); T visit(IfStatementNode ifStatement); + T visit(WhileNode whileLoop); } |
