diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-07-20 16:35:39 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-07-20 16:35:39 +0100 |
| commit | f522f1d19f71a8554bc1b7ef660c421f180cfbb7 (patch) | |
| tree | a594d3042c1db0f64637aac14af13322fe5ac7bb /src/main/java/org/shedlang/compiler/backends | |
| parent | 8fb3252df007fb74fcd695908f285915b4facda2 (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.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"; + } +} |
