aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/shedlang/compiler/backends
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-20 16:35:39 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-20 16:35:39 +0100
commitf522f1d19f71a8554bc1b7ef660c421f180cfbb7 (patch)
treea594d3042c1db0f64637aac14af13322fe5ac7bb /src/main/java/org/shedlang/compiler/backends
parent8fb3252df007fb74fcd695908f285915b4facda2 (diff)
Add Patio backend
Diffstat (limited to 'src/main/java/org/shedlang/compiler/backends')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/PatioBackend.java44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/PatioBackend.java b/src/main/java/org/shedlang/compiler/backends/PatioBackend.java
new file mode 100644
index 00000000..0db8579b
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/backends/PatioBackend.java
@@ -0,0 +1,44 @@
+package org.shedlang.compiler.backends;
+
+import org.shedlang.compiler.config.ProjectConfig;
+import org.shedlang.compiler.patio.PatioCodeGen;
+import org.shedlang.compiler.patio.ast.PatioSerializer;
+import org.shedlang.compiler.stackir.instructions.Instruction;
+import org.shedlang.compiler.typechecker.TypeInfo;
+import org.shedlang.compiler.types.NamespaceName;
+
+import java.nio.file.Path;
+import java.util.List;
+import java.util.Map;
+
+public class PatioBackend implements Backend {
+ public void compile(
+ ProjectConfig config,
+ Map<NamespaceName, List<Instruction>> namespaces,
+ TypeInfo typeInfo,
+ Path targetDir
+ ) {
+ System.out.println("main: " + config.main());
+
+ for (var namespaceEntry : namespaces.entrySet()) {
+ var namespaceName = namespaceEntry.getKey();
+ var instructions = namespaceEntry.getValue();
+
+ System.out.println(namespaceName);
+
+ var compilationUnit = PatioCodeGen.generateNamespace(instructions);
+
+ var builder = new StringBuilder();
+ PatioSerializer.serializeCompilationUnit(compilationUnit, builder);
+ var compilationUnitString = builder.toString();
+
+ System.out.println(compilationUnitString);
+ System.out.println();
+ }
+ }
+
+ @Override
+ public String name() {
+ return "generate-instructions";
+ }
+}