aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/shedlang/compiler/backends
diff options
context:
space:
mode:
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";
+ }
+}