aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-14 21:26:14 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-14 21:40:53 +0000
commit5e64358224731d9b167fd155c481166d36b1fddd (patch)
tree10dbef6834fb15a1ab49111f87cdf72122a64b88 /src/main/java
parentfeca7c0185041c27d7ee2057b5458b02b0b352bf (diff)
Add initial method runner for C#
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java34
-rw-r--r--src/main/java/org/zwobble/couscous/util/ExtraLists.java4
2 files changed, 38 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java
new file mode 100644
index 0000000..3f6c8a7
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java
@@ -0,0 +1,34 @@
+package org.zwobble.couscous.backends.csharp;
+
+import org.zwobble.couscous.Backend;
+import org.zwobble.couscous.ast.ClassNode;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.List;
+
+import static org.zwobble.couscous.util.ExtraLists.list;
+
+public class CsharpBackend implements Backend {
+ private final Path directoryPath;
+ private final String namespace;
+
+ public CsharpBackend(Path directoryPath, String namespace) {
+ this.directoryPath = directoryPath;
+ this.namespace = namespace;
+ }
+
+ @Override
+ public void compile(List<ClassNode> classes) throws IOException {
+ Files.write(directoryPath.resolve("Program.cs"), list(
+ "namespace " + namespace + "{" +
+ " class Program {" +
+ " public static string run() {" +
+ " return \"T\";" +
+ " }" +
+ " }" +
+ "}"
+ ));
+ }
+}
diff --git a/src/main/java/org/zwobble/couscous/util/ExtraLists.java b/src/main/java/org/zwobble/couscous/util/ExtraLists.java
index dda2479..ce9230a 100644
--- a/src/main/java/org/zwobble/couscous/util/ExtraLists.java
+++ b/src/main/java/org/zwobble/couscous/util/ExtraLists.java
@@ -22,6 +22,10 @@ public class ExtraLists {
return ImmutableList.of(value1, value2);
}
+ public static <T> List<T> list(T value1, T value2, T value3) {
+ return ImmutableList.of(value1, value2, value3);
+ }
+
public static <T> List<T> cons(T value, List<T> list) {
return Stream.concat(Stream.of(value), list.stream()).collect(Collectors.toList());
}