diff options
Diffstat (limited to 'src/main/java/org')
33 files changed, 158 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/AnnotationNode.java b/src/main/java/org/zwobble/couscous/ast/AnnotationNode.java index 86fe23c..1d4b8ce 100644 --- a/src/main/java/org/zwobble/couscous/ast/AnnotationNode.java +++ b/src/main/java/org/zwobble/couscous/ast/AnnotationNode.java @@ -26,6 +26,11 @@ public class AnnotationNode implements Node { } @Override + public int type() { + return NodeTypes.ANNOTATION; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.empty(); } diff --git a/src/main/java/org/zwobble/couscous/ast/ArrayNode.java b/src/main/java/org/zwobble/couscous/ast/ArrayNode.java index a544cc9..1f3c8e3 100644 --- a/src/main/java/org/zwobble/couscous/ast/ArrayNode.java +++ b/src/main/java/org/zwobble/couscous/ast/ArrayNode.java @@ -39,6 +39,11 @@ public class ArrayNode implements ExpressionNode { } @Override + public int type() { + return NodeTypes.ARRAY; + } + + @Override public Iterable<? extends Node> childNodes() { return elements; } diff --git a/src/main/java/org/zwobble/couscous/ast/AssignmentNode.java b/src/main/java/org/zwobble/couscous/ast/AssignmentNode.java index a2f9f2d..d41f629 100644 --- a/src/main/java/org/zwobble/couscous/ast/AssignmentNode.java +++ b/src/main/java/org/zwobble/couscous/ast/AssignmentNode.java @@ -47,6 +47,11 @@ public class AssignmentNode implements ExpressionNode { } @Override + public int type() { + return NodeTypes.ASSIGNMENT; + } + + @Override public Iterable<Node> childNodes() { return ExtraIterables.of(value, target); } diff --git a/src/main/java/org/zwobble/couscous/ast/CastNode.java b/src/main/java/org/zwobble/couscous/ast/CastNode.java index ed41011..d22bb63 100644 --- a/src/main/java/org/zwobble/couscous/ast/CastNode.java +++ b/src/main/java/org/zwobble/couscous/ast/CastNode.java @@ -33,6 +33,11 @@ public class CastNode implements ExpressionNode { } @Override + public int type() { + return NodeTypes.CAST; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.of(expression); } diff --git a/src/main/java/org/zwobble/couscous/ast/ClassNode.java b/src/main/java/org/zwobble/couscous/ast/ClassNode.java index 97f66f8..4664bc0 100644 --- a/src/main/java/org/zwobble/couscous/ast/ClassNode.java +++ b/src/main/java/org/zwobble/couscous/ast/ClassNode.java @@ -98,6 +98,11 @@ public class ClassNode implements TypeNode { } @Override + public int type() { + return NodeTypes.CLASS; + } + + @Override public Iterable<? extends Node> childNodes() { return Iterables.concat( ExtraIterables.of(constructor), diff --git a/src/main/java/org/zwobble/couscous/ast/ConstructorCallNode.java b/src/main/java/org/zwobble/couscous/ast/ConstructorCallNode.java index 9f054ae..e9eabd6 100644 --- a/src/main/java/org/zwobble/couscous/ast/ConstructorCallNode.java +++ b/src/main/java/org/zwobble/couscous/ast/ConstructorCallNode.java @@ -40,6 +40,11 @@ public class ConstructorCallNode implements ExpressionNode { } @Override + public int type() { + return NodeTypes.CONSTRUCTOR_CALL; + } + + @Override public Iterable<? extends Node> childNodes() { return arguments; } diff --git a/src/main/java/org/zwobble/couscous/ast/ConstructorNode.java b/src/main/java/org/zwobble/couscous/ast/ConstructorNode.java index ea83c93..cca7a31 100644 --- a/src/main/java/org/zwobble/couscous/ast/ConstructorNode.java +++ b/src/main/java/org/zwobble/couscous/ast/ConstructorNode.java @@ -40,6 +40,11 @@ public class ConstructorNode implements Node { } @Override + public int type() { + return NodeTypes.CONSTRUCTOR; + } + + @Override public Iterable<? extends Node> childNodes() { return Iterables.concat(arguments, body); } diff --git a/src/main/java/org/zwobble/couscous/ast/EnumNode.java b/src/main/java/org/zwobble/couscous/ast/EnumNode.java index 5b68dc6..c1db294 100644 --- a/src/main/java/org/zwobble/couscous/ast/EnumNode.java +++ b/src/main/java/org/zwobble/couscous/ast/EnumNode.java @@ -51,6 +51,11 @@ public class EnumNode implements TypeNode { } @Override + public int type() { + return NodeTypes.ENUM; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.empty(); } diff --git a/src/main/java/org/zwobble/couscous/ast/ExpressionStatementNode.java b/src/main/java/org/zwobble/couscous/ast/ExpressionStatementNode.java index 1dacc9f..c32efbc 100644 --- a/src/main/java/org/zwobble/couscous/ast/ExpressionStatementNode.java +++ b/src/main/java/org/zwobble/couscous/ast/ExpressionStatementNode.java @@ -25,6 +25,11 @@ public class ExpressionStatementNode implements StatementNode { } @Override + public int type() { + return NodeTypes.EXPRESSION_STATEMENT; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.of(expression); } diff --git a/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java b/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java index 3b7992c..a6ef2dd 100644 --- a/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java +++ b/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java @@ -67,6 +67,11 @@ public class FieldAccessNode implements AssignableExpressionNode { } @Override + public int type() { + return NodeTypes.FIELD_ACCESS; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.of(left); } diff --git a/src/main/java/org/zwobble/couscous/ast/FieldDeclarationNode.java b/src/main/java/org/zwobble/couscous/ast/FieldDeclarationNode.java index 8c4dc5a..59fcab8 100644 --- a/src/main/java/org/zwobble/couscous/ast/FieldDeclarationNode.java +++ b/src/main/java/org/zwobble/couscous/ast/FieldDeclarationNode.java @@ -46,6 +46,11 @@ public class FieldDeclarationNode implements Node { } @Override + public int type() { + return NodeTypes.FIELD_DECLARATION; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.empty(); } diff --git a/src/main/java/org/zwobble/couscous/ast/FormalArgumentNode.java b/src/main/java/org/zwobble/couscous/ast/FormalArgumentNode.java index db13e59..9c20aff 100644 --- a/src/main/java/org/zwobble/couscous/ast/FormalArgumentNode.java +++ b/src/main/java/org/zwobble/couscous/ast/FormalArgumentNode.java @@ -34,6 +34,11 @@ public class FormalArgumentNode implements VariableNode, Node { } @Override + public int type() { + return NodeTypes.FORMAL_ARGUMENT; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.empty(); } diff --git a/src/main/java/org/zwobble/couscous/ast/FormalTypeParameterNode.java b/src/main/java/org/zwobble/couscous/ast/FormalTypeParameterNode.java index 2c1ac4a..d51a4a4 100644 --- a/src/main/java/org/zwobble/couscous/ast/FormalTypeParameterNode.java +++ b/src/main/java/org/zwobble/couscous/ast/FormalTypeParameterNode.java @@ -30,6 +30,11 @@ public class FormalTypeParameterNode implements Node { } @Override + public int type() { + return NodeTypes.FORMAL_TYPE_PARAMETER; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.empty(); } diff --git a/src/main/java/org/zwobble/couscous/ast/IfStatementNode.java b/src/main/java/org/zwobble/couscous/ast/IfStatementNode.java index 6ead916..4a58251 100644 --- a/src/main/java/org/zwobble/couscous/ast/IfStatementNode.java +++ b/src/main/java/org/zwobble/couscous/ast/IfStatementNode.java @@ -46,6 +46,11 @@ public class IfStatementNode implements StatementNode { } @Override + public int type() { + return NodeTypes.IF_STATEMENT; + } + + @Override public Iterable<? extends Node> childNodes() { return Iterables.concat(ExtraIterables.of(condition), trueBranch, falseBranch); } diff --git a/src/main/java/org/zwobble/couscous/ast/InstanceOfNode.java b/src/main/java/org/zwobble/couscous/ast/InstanceOfNode.java index d36e909..f2dcc0b 100644 --- a/src/main/java/org/zwobble/couscous/ast/InstanceOfNode.java +++ b/src/main/java/org/zwobble/couscous/ast/InstanceOfNode.java @@ -35,6 +35,11 @@ public class InstanceOfNode implements ExpressionNode { } @Override + public int type() { + return NodeTypes.INSTANCE_OF; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.of(left); } diff --git a/src/main/java/org/zwobble/couscous/ast/InstanceReceiver.java b/src/main/java/org/zwobble/couscous/ast/InstanceReceiver.java index 292b026..d86d5d1 100644 --- a/src/main/java/org/zwobble/couscous/ast/InstanceReceiver.java +++ b/src/main/java/org/zwobble/couscous/ast/InstanceReceiver.java @@ -25,6 +25,11 @@ public class InstanceReceiver implements Receiver { } @Override + public int type() { + return NodeTypes.INSTANCE_RECEIVER; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.of(expression); } diff --git a/src/main/java/org/zwobble/couscous/ast/InterfaceNode.java b/src/main/java/org/zwobble/couscous/ast/InterfaceNode.java index 94d45fd..c01df04 100644 --- a/src/main/java/org/zwobble/couscous/ast/InterfaceNode.java +++ b/src/main/java/org/zwobble/couscous/ast/InterfaceNode.java @@ -71,6 +71,11 @@ public class InterfaceNode implements TypeNode { } @Override + public int type() { + return NodeTypes.INTERFACE; + } + + @Override public Iterable<? extends Node> childNodes() { return methods; } diff --git a/src/main/java/org/zwobble/couscous/ast/LiteralNode.java b/src/main/java/org/zwobble/couscous/ast/LiteralNode.java index ac9cd1b..b8d8735 100644 --- a/src/main/java/org/zwobble/couscous/ast/LiteralNode.java +++ b/src/main/java/org/zwobble/couscous/ast/LiteralNode.java @@ -60,6 +60,11 @@ public class LiteralNode implements ExpressionNode { } @Override + public int type() { + return NodeTypes.LITERAL; + } + + @Override public Iterable<Node> childNodes() { return ExtraIterables.empty(); } diff --git a/src/main/java/org/zwobble/couscous/ast/LocalVariableDeclarationNode.java b/src/main/java/org/zwobble/couscous/ast/LocalVariableDeclarationNode.java index 54a6804..595adb1 100644 --- a/src/main/java/org/zwobble/couscous/ast/LocalVariableDeclarationNode.java +++ b/src/main/java/org/zwobble/couscous/ast/LocalVariableDeclarationNode.java @@ -56,6 +56,11 @@ public class LocalVariableDeclarationNode implements VariableNode, StatementNode } @Override + public int type() { + return NodeTypes.LOCAL_VARIABLE_DECLARATION; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.of(initialValue); } diff --git a/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java b/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java index 0446857..381fb11 100644 --- a/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java +++ b/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java @@ -160,6 +160,11 @@ public class MethodCallNode implements ExpressionNode { } @Override + public int type() { + return NodeTypes.METHOD_CALL; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.lazyCons(receiver, arguments); } diff --git a/src/main/java/org/zwobble/couscous/ast/MethodNode.java b/src/main/java/org/zwobble/couscous/ast/MethodNode.java index 2c1c099..143158a 100644 --- a/src/main/java/org/zwobble/couscous/ast/MethodNode.java +++ b/src/main/java/org/zwobble/couscous/ast/MethodNode.java @@ -195,6 +195,11 @@ public class MethodNode implements Node { } @Override + public int type() { + return NodeTypes.METHOD; + } + + @Override public Iterable<? extends Node> childNodes() { return Iterables.concat( annotations, diff --git a/src/main/java/org/zwobble/couscous/ast/Node.java b/src/main/java/org/zwobble/couscous/ast/Node.java index cc57d12..e210c51 100644 --- a/src/main/java/org/zwobble/couscous/ast/Node.java +++ b/src/main/java/org/zwobble/couscous/ast/Node.java @@ -4,6 +4,8 @@ import org.zwobble.couscous.ast.visitors.NodeMapper; import org.zwobble.couscous.ast.visitors.NodeVisitor; public interface Node { + int type(); + Iterable<? extends Node> childNodes(); default void accept(NodeVisitor visitor) { diff --git a/src/main/java/org/zwobble/couscous/ast/OperationNode.java b/src/main/java/org/zwobble/couscous/ast/OperationNode.java index 32bde37..44f2d1f 100644 --- a/src/main/java/org/zwobble/couscous/ast/OperationNode.java +++ b/src/main/java/org/zwobble/couscous/ast/OperationNode.java @@ -52,6 +52,11 @@ public class OperationNode implements ExpressionNode { } @Override + public int type() { + return NodeTypes.OPERATION; + } + + @Override public Iterable<? extends Node> childNodes() { return arguments; } diff --git a/src/main/java/org/zwobble/couscous/ast/ReturnNode.java b/src/main/java/org/zwobble/couscous/ast/ReturnNode.java index a5d9011..2c6d665 100644 --- a/src/main/java/org/zwobble/couscous/ast/ReturnNode.java +++ b/src/main/java/org/zwobble/couscous/ast/ReturnNode.java @@ -25,6 +25,11 @@ public class ReturnNode implements StatementNode { } @Override + public int type() { + return NodeTypes.RETURN; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.of(value); } diff --git a/src/main/java/org/zwobble/couscous/ast/StatementNode.java b/src/main/java/org/zwobble/couscous/ast/StatementNode.java index 38eb4d3..4755de7 100644 --- a/src/main/java/org/zwobble/couscous/ast/StatementNode.java +++ b/src/main/java/org/zwobble/couscous/ast/StatementNode.java @@ -6,7 +6,7 @@ import org.zwobble.couscous.ast.visitors.StatementNodeMapper; public interface StatementNode extends Node { <T> T accept(StatementNodeMapper<T> visitor); - + @Override default <T> T accept(NodeMapper<T> visitor) { return accept(new StatementNodeMapper<T>() { diff --git a/src/main/java/org/zwobble/couscous/ast/StaticReceiver.java b/src/main/java/org/zwobble/couscous/ast/StaticReceiver.java index f2fbc59..34f9e13 100644 --- a/src/main/java/org/zwobble/couscous/ast/StaticReceiver.java +++ b/src/main/java/org/zwobble/couscous/ast/StaticReceiver.java @@ -35,6 +35,11 @@ public class StaticReceiver implements Receiver { } @Override + public int type() { + return NodeTypes.STATIC_RECEIVER; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.empty(); } diff --git a/src/main/java/org/zwobble/couscous/ast/TernaryConditionalNode.java b/src/main/java/org/zwobble/couscous/ast/TernaryConditionalNode.java index 3ffcf63..0d2ecda 100644 --- a/src/main/java/org/zwobble/couscous/ast/TernaryConditionalNode.java +++ b/src/main/java/org/zwobble/couscous/ast/TernaryConditionalNode.java @@ -44,6 +44,11 @@ public class TernaryConditionalNode implements ExpressionNode { } @Override + public int type() { + return NodeTypes.TERNARY_CONDITIONAL; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.of(condition, ifTrue, ifFalse); } diff --git a/src/main/java/org/zwobble/couscous/ast/ThisReferenceNode.java b/src/main/java/org/zwobble/couscous/ast/ThisReferenceNode.java index 1363b24..8da97e6 100644 --- a/src/main/java/org/zwobble/couscous/ast/ThisReferenceNode.java +++ b/src/main/java/org/zwobble/couscous/ast/ThisReferenceNode.java @@ -31,6 +31,11 @@ public class ThisReferenceNode implements ExpressionNode, ReferenceNode { } @Override + public int type() { + return NodeTypes.THIS_REFERENCE; + } + + @Override public Iterable<Node> childNodes() { return ExtraIterables.empty(); } diff --git a/src/main/java/org/zwobble/couscous/ast/ThrowNode.java b/src/main/java/org/zwobble/couscous/ast/ThrowNode.java index c8a0edf..0b273c9 100644 --- a/src/main/java/org/zwobble/couscous/ast/ThrowNode.java +++ b/src/main/java/org/zwobble/couscous/ast/ThrowNode.java @@ -25,6 +25,11 @@ public class ThrowNode implements StatementNode { } @Override + public int type() { + return NodeTypes.THROW; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.of(value); } diff --git a/src/main/java/org/zwobble/couscous/ast/TryNode.java b/src/main/java/org/zwobble/couscous/ast/TryNode.java index 3c18e1a..9a61ecc 100644 --- a/src/main/java/org/zwobble/couscous/ast/TryNode.java +++ b/src/main/java/org/zwobble/couscous/ast/TryNode.java @@ -50,6 +50,11 @@ public class TryNode implements StatementNode { } @Override + public int type() { + return NodeTypes.TRY; + } + + @Override public Iterable<? extends Node> childNodes() { return Iterables.concat( body, diff --git a/src/main/java/org/zwobble/couscous/ast/TypeCoercionNode.java b/src/main/java/org/zwobble/couscous/ast/TypeCoercionNode.java index 89f6d84..9e4507d 100644 --- a/src/main/java/org/zwobble/couscous/ast/TypeCoercionNode.java +++ b/src/main/java/org/zwobble/couscous/ast/TypeCoercionNode.java @@ -43,6 +43,11 @@ public class TypeCoercionNode implements ExpressionNode { } @Override + public int type() { + return NodeTypes.TYPE_COERCION; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.of(expression); } diff --git a/src/main/java/org/zwobble/couscous/ast/VariableReferenceNode.java b/src/main/java/org/zwobble/couscous/ast/VariableReferenceNode.java index ce2ba44..2fb65ef 100644 --- a/src/main/java/org/zwobble/couscous/ast/VariableReferenceNode.java +++ b/src/main/java/org/zwobble/couscous/ast/VariableReferenceNode.java @@ -51,6 +51,11 @@ public class VariableReferenceNode implements AssignableExpressionNode, Referenc } @Override + public int type() { + return NodeTypes.VARIABLE_REFERENCE; + } + + @Override public Iterable<Node> childNodes() { return ExtraIterables.empty(); } diff --git a/src/main/java/org/zwobble/couscous/ast/WhileNode.java b/src/main/java/org/zwobble/couscous/ast/WhileNode.java index 3dd6bce..6cd5c51 100644 --- a/src/main/java/org/zwobble/couscous/ast/WhileNode.java +++ b/src/main/java/org/zwobble/couscous/ast/WhileNode.java @@ -34,6 +34,11 @@ public class WhileNode implements StatementNode { } @Override + public int type() { + return NodeTypes.WHILE; + } + + @Override public Iterable<? extends Node> childNodes() { return ExtraIterables.lazyCons(condition, body); } |
