aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-01 21:49:18 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-01 21:49:18 +0100
commit30d2215800deafbdcfb134f1356777ec0139bb7a (patch)
treee687fa289e269bd91ab19b027d6d8a96b9c96b4d /src/main/java/org/zwobble/couscous/ast
parent8187130b8a8aabbcf983e530413d6969141d6da2 (diff)
Use normal method call exec in interpreter entry point
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/ClassNode.java1
-rw-r--r--src/main/java/org/zwobble/couscous/ast/FormalArgumentNode.java12
-rw-r--r--src/main/java/org/zwobble/couscous/ast/LiteralNode.java4
-rw-r--r--src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java4
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;