diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-01 21:49:18 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-01 21:49:18 +0100 |
| commit | 30d2215800deafbdcfb134f1356777ec0139bb7a (patch) | |
| tree | e687fa289e269bd91ab19b027d6d8a96b9c96b4d /src/main/java/org/zwobble/couscous/ast | |
| parent | 8187130b8a8aabbcf983e530413d6969141d6da2 (diff) | |
Use normal method call exec in interpreter entry point
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast')
4 files changed, 21 insertions, 0 deletions
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<MethodNode> 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<ConcreteType<?>> 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<ExpressionNode> arguments) { + return new StaticMethodCallNode(className, methodName, arguments); + } + String className; String methodName; List<ExpressionNode> arguments; |
