From 30d2215800deafbdcfb134f1356777ec0139bb7a Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 1 Oct 2015 21:49:18 +0100 Subject: Use normal method call exec in interpreter entry point --- src/main/java/org/zwobble/couscous/ast/ClassNode.java | 1 + .../java/org/zwobble/couscous/ast/FormalArgumentNode.java | 12 ++++++++++++ src/main/java/org/zwobble/couscous/ast/LiteralNode.java | 4 ++++ .../java/org/zwobble/couscous/ast/StaticMethodCallNode.java | 4 ++++ 4 files changed, 21 insertions(+) (limited to 'src/main/java/org/zwobble/couscous/ast') diff --git a/src/main/java/org/zwobble/couscous/ast/ClassNode.java b/src/main/java/org/zwobble/couscous/ast/ClassNode.java index ffa5165..6dd7b12 100644 --- a/src/main/java/org/zwobble/couscous/ast/ClassNode.java +++ b/src/main/java/org/zwobble/couscous/ast/ClassNode.java @@ -9,6 +9,7 @@ import lombok.Value; @Builder @Value public class ClassNode { + String name; @Singular List methods; } diff --git a/src/main/java/org/zwobble/couscous/ast/FormalArgumentNode.java b/src/main/java/org/zwobble/couscous/ast/FormalArgumentNode.java index da3a838..72a5f51 100644 --- a/src/main/java/org/zwobble/couscous/ast/FormalArgumentNode.java +++ b/src/main/java/org/zwobble/couscous/ast/FormalArgumentNode.java @@ -1,9 +1,21 @@ package org.zwobble.couscous.ast; +import java.util.function.Supplier; + +import org.zwobble.couscous.values.ConcreteType; + +import lombok.AccessLevel; +import lombok.Getter; import lombok.Value; @Value public class FormalArgumentNode implements VariableNode { int id; + @Getter(value=AccessLevel.NONE) + Supplier> type; String name; + + public ConcreteType getType() { + return type.get(); + } } diff --git a/src/main/java/org/zwobble/couscous/ast/LiteralNode.java b/src/main/java/org/zwobble/couscous/ast/LiteralNode.java index cc57aef..0869653 100644 --- a/src/main/java/org/zwobble/couscous/ast/LiteralNode.java +++ b/src/main/java/org/zwobble/couscous/ast/LiteralNode.java @@ -10,6 +10,10 @@ import lombok.Value; @Value public class LiteralNode implements ExpressionNode { + public static LiteralNode literal(InterpreterValue value) { + return new LiteralNode(value); + } + public static LiteralNode literal(String value) { return new LiteralNode(new StringValue(value)); } diff --git a/src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java b/src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java index 390c37f..4f1e9ff 100644 --- a/src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java +++ b/src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java @@ -14,6 +14,10 @@ public class StaticMethodCallNode implements ExpressionNode { return new StaticMethodCallNode(className, methodName, asList(arguments)); } + public static StaticMethodCallNode staticMethodCall(String className, String methodName, List arguments) { + return new StaticMethodCallNode(className, methodName, arguments); + } + String className; String methodName; List arguments; -- cgit v1.2.3