diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-07-20 11:11:54 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-07-20 11:11:54 +0100 |
| commit | 0fdcc84a6eaf3664e5305055e389dde33553ad5e (patch) | |
| tree | 53be7aca955864003ace323a685ca77b23c084c4 /src/main/java | |
| parent | bafc83a26f9b2b94d8ed04b4841825f67bb48fef (diff) | |
Add Patio int type
Diffstat (limited to 'src/main/java')
4 files changed, 30 insertions, 0 deletions
diff --git a/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java b/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java index 655e4fb4..d915399a 100644 --- a/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java +++ b/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java @@ -1,6 +1,7 @@ package org.shedlang.compiler.patio.ast; import org.shedlang.compiler.patio.ast.instructions.*; +import org.shedlang.compiler.patio.ast.types.PatioIntType; import org.shedlang.compiler.treetext.Tree; import java.util.List; @@ -29,6 +30,11 @@ public class PatioSerializer { serializeTree(tree, builder, 0); } + public static void serializeType(PatioIntType type, StringBuilder builder) { + var tree = typeToTree(type); + serializeTree(tree, builder, 0); + } + private static Tree compilationUnitElementToTree(PatioCompilationUnitElement element) { return switch (element) { case PatioFunctionDefinition functionDefinition -> @@ -114,6 +120,13 @@ public class PatioSerializer { }; } + private static Tree typeToTree(PatioIntType type) { + return switch (type) { + case PatioIntType intType -> + treeIdentifier("int"); + }; + } + private static Tree localToTree(PatioLocal local) { return treeString(local.name()); } diff --git a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioIntType.java b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioIntType.java new file mode 100644 index 00000000..b5312754 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioIntType.java @@ -0,0 +1,5 @@ +package org.shedlang.compiler.patio.ast.types; + +public record PatioIntType() implements PatioType { + static final PatioIntType INSTANCE = new PatioIntType(); +} diff --git a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioType.java b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioType.java new file mode 100644 index 00000000..54c892b4 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioType.java @@ -0,0 +1,4 @@ +package org.shedlang.compiler.patio.ast.types; + +public sealed interface PatioType permits PatioIntType { +} diff --git a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioTypes.java b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioTypes.java new file mode 100644 index 00000000..6830e0fa --- /dev/null +++ b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioTypes.java @@ -0,0 +1,8 @@ +package org.shedlang.compiler.patio.ast.types; + +public class PatioTypes { + private PatioTypes() { + } + + public static final PatioIntType INT = PatioIntType.INSTANCE; +} |
