aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast/ExpressionNode.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/ExpressionNode.java')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/ExpressionNode.java48
1 files changed, 45 insertions, 3 deletions
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> T accept(ExpressionNodeVisitor<T> visitor);
+ <T> T accept(ExpressionNodeMapper<T> visitor);
+
+ @Override
+ default void accept(NodeVisitor visitor) {
+ accept(new ExpressionNodeMapper<Void>() {
+ @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;
+ }
+ });
+ }
}