From 166a205aeb4c595b40b8ffe4c7d745b13031e3b3 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 5 Oct 2015 22:26:29 +0100 Subject: Add support for static method calls to Python backend --- .../org/zwobble/couscous/ast/ExpressionNode.java | 48 ++++++++++++++++++++-- 1 file changed, 45 insertions(+), 3 deletions(-) (limited to 'src/main/java/org/zwobble/couscous/ast/ExpressionNode.java') diff --git a/src/main/java/org/zwobble/couscous/ast/ExpressionNode.java b/src/main/java/org/zwobble/couscous/ast/ExpressionNode.java index bc27a99..297133d 100644 --- a/src/main/java/org/zwobble/couscous/ast/ExpressionNode.java +++ b/src/main/java/org/zwobble/couscous/ast/ExpressionNode.java @@ -1,9 +1,51 @@ package org.zwobble.couscous.ast; -import org.zwobble.couscous.ast.visitors.ExpressionNodeVisitor; +import org.zwobble.couscous.ast.visitors.ExpressionNodeMapper; +import org.zwobble.couscous.ast.visitors.NodeVisitor; import org.zwobble.couscous.values.TypeReference; -public interface ExpressionNode { +public interface ExpressionNode extends Node { TypeReference getType(); - T accept(ExpressionNodeVisitor visitor); + T accept(ExpressionNodeMapper visitor); + + @Override + default void accept(NodeVisitor visitor) { + accept(new ExpressionNodeMapper() { + @Override + public Void visit(LiteralNode literal) { + visitor.visit(literal); + return null; + } + + @Override + public Void visit(VariableReferenceNode variableReference) { + visitor.visit(variableReference); + return null; + } + + @Override + public Void visit(AssignmentNode assignment) { + visitor.visit(assignment); + return null; + } + + @Override + public Void visit(TernaryConditionalNode ternaryConditional) { + visitor.visit(ternaryConditional); + return null; + } + + @Override + public Void visit(MethodCallNode methodCall) { + visitor.visit(methodCall); + return null; + } + + @Override + public Void visit(StaticMethodCallNode staticMethodCall) { + visitor.visit(staticMethodCall); + return null; + } + }); + } } -- cgit v1.2.3