aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-20 11:11:54 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-20 11:11:54 +0100
commit0fdcc84a6eaf3664e5305055e389dde33553ad5e (patch)
tree53be7aca955864003ace323a685ca77b23c084c4 /src/main/java
parentbafc83a26f9b2b94d8ed04b4841825f67bb48fef (diff)
Add Patio int type
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java13
-rw-r--r--src/main/java/org/shedlang/compiler/patio/ast/types/PatioIntType.java5
-rw-r--r--src/main/java/org/shedlang/compiler/patio/ast/types/PatioType.java4
-rw-r--r--src/main/java/org/shedlang/compiler/patio/ast/types/PatioTypes.java8
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;
+}