summaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-06-12 17:05:13 +0100
committerMichael Williamson <mike@zwobble.org>2026-06-12 17:05:13 +0100
commit51e6a77431e2321cf1878752d715cfc4011327b1 (patch)
tree2d1065fd3bfb662b56327ccf3f248661d15e9378 /src/main/java/org
parentb7e7ebf6380dcf0c7f02fca9002318d36ffc5b96 (diff)
Add Java assignment
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java10
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaAssignment.java7
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java2
3 files changed, 18 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java
index a7a3775..8fbdacc 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java
@@ -37,6 +37,12 @@ public class JavaWriter implements AutoCloseable {
this.writer.close();
}
+ private void writeAssignment(JavaAssignment assignment) throws IOException {
+ this.writeExpression(assignment.left());
+ this.writer.write(" = ");
+ this.writeExpression(assignment.right());
+ }
+
public void writeCompilationUnit(JavaCompilationUnit compilationUnit) throws IOException {
this.writer.writeHeader();
this.writer.write("package ");
@@ -173,6 +179,10 @@ public class JavaWriter implements AutoCloseable {
void writeExpression(JavaExpression expression) throws IOException {
switch (expression) {
+ case JavaAssignment assignment -> {
+ writeAssignment(assignment);
+ }
+
case JavaIntegerLiteral integerLiteral -> {
writeIntegerLiteral(integerLiteral);
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaAssignment.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaAssignment.java
new file mode 100644
index 0000000..b53e192
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaAssignment.java
@@ -0,0 +1,7 @@
+package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
+
+public record JavaAssignment(
+ JavaExpression left,
+ JavaExpression right
+) implements JavaExpression {
+}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java
index 8bd706f..195441b 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaExpression.java
@@ -1,4 +1,4 @@
package org.zwobble.hobgoblin.compiler.output.lang.java.ast;
-public sealed interface JavaExpression permits JavaIntegerLiteral, JavaMethodCall, JavaNewExpression, JavaNullLiteral, JavaRef, JavaStaticFieldAccess, JavaStaticMethodCall, JavaStringLiteral {
+public sealed interface JavaExpression permits JavaAssignment, JavaIntegerLiteral, JavaMethodCall, JavaNewExpression, JavaNullLiteral, JavaRef, JavaStaticFieldAccess, JavaStaticMethodCall, JavaStringLiteral {
}