diff options
Diffstat (limited to 'src/main/java/org/shedlang/compiler/backends')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/PatioBackend.java | 44 |
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"; + } +} |
