summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-08-30 09:33:49 +0100
committerMichael Williamson <mike@zwobble.org>2026-08-30 09:33:49 +0100
commit5257c230be9bbbb1dad4d053d80405d29369a1c7 (patch)
tree936cba5877a02ac209f8a5fdb1a4d5ba99296f5f /src/main/java
parent844903922facb51292735c6577296c7d5f17c1a9 (diff)
Add assignment operations to TypeScript AST
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/TypescriptWriter.java18
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptBinaryOperation.java52
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptBinaryOperator.java13
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptExpression.java2
4 files changed, 84 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/TypescriptWriter.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/TypescriptWriter.java
index 6cd116e..ddad0b1 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/TypescriptWriter.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/TypescriptWriter.java
@@ -170,6 +170,10 @@ public class TypescriptWriter implements AutoCloseable {
void writeExpression(TypescriptExpression expression) throws IOException {
switch (expression) {
+ case TypescriptBinaryOperation binaryOperation -> {
+ this.writeBinaryOperation(binaryOperation);
+ }
+
case TypescriptNumberLiteral numberLiteral -> {
this.writeNumberLiteral(numberLiteral);
}
@@ -180,6 +184,20 @@ public class TypescriptWriter implements AutoCloseable {
}
}
+ private void writeBinaryOperation(TypescriptBinaryOperation binaryOperation) throws IOException {
+ this.writeExpression(binaryOperation.left());
+ this.writer.write(" ");
+ this.writeBinaryOperator(binaryOperation.operator());
+ this.writer.write(" ");
+ this.writeExpression(binaryOperation.right());
+ }
+
+ private void writeBinaryOperator(TypescriptBinaryOperator operator) throws IOException {
+ this.writer.write(switch (operator) {
+ case ASSIGN -> "=";
+ });
+ }
+
private void writeNumberLiteral(TypescriptNumberLiteral numberLiteral) throws IOException {
this.writer.write(Double.toString(numberLiteral.value()));
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptBinaryOperation.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptBinaryOperation.java
new file mode 100644
index 0000000..35e9bed
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptBinaryOperation.java
@@ -0,0 +1,52 @@
+// Generated by hobgoblin.
+
+package org.zwobble.hobgoblin.compiler.output.lang.typescript.ast;
+
+// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation imports
+// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation imports
+
+public record TypescriptBinaryOperation(
+ org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperator operator,
+ org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptExpression left,
+ org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptExpression right
+) implements org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptExpression {
+ public static org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation.Builder arbitrary() {
+ return new org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation.Builder(org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperator.ASSIGN, org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptNumberLiteral.arbitrary().build(), org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptNumberLiteral.arbitrary().build());
+ }
+
+ public record Builder(
+ org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperator operator,
+ org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptExpression left,
+ org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptExpression right
+ ) implements org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptExpression.Builder {
+ public org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation build() {
+ return new org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation(operator, left, right);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation.Builder withOperator(org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperator operator) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation.Builder(operator, left, right);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation.Builder withLeft(org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptExpression left) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation.Builder(operator, left, right);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation.Builder withLeft(org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptExpression.Builder left) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation.Builder(operator, left.build(), right);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation.Builder withRight(org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptExpression right) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation.Builder(operator, left, right);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation.Builder withRight(org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptExpression.Builder right) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation.Builder(operator, left, right.build());
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation.Builder body
+ // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation.Builder body
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation body
+ // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation body
+}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptBinaryOperator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptBinaryOperator.java
new file mode 100644
index 0000000..f9264b5
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptBinaryOperator.java
@@ -0,0 +1,13 @@
+// Generated by hobgoblin.
+
+package org.zwobble.hobgoblin.compiler.output.lang.typescript.ast;
+
+// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperator imports
+// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperator imports
+
+public enum TypescriptBinaryOperator {
+ ASSIGN
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperator body
+ // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperator body
+}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptExpression.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptExpression.java
index 3996e2c..99dc933 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptExpression.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptExpression.java
@@ -5,7 +5,7 @@ package org.zwobble.hobgoblin.compiler.output.lang.typescript.ast;
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptExpression imports
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptExpression imports
-public sealed interface TypescriptExpression permits org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptNumberLiteral, org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptRef {
+public sealed interface TypescriptExpression permits org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptBinaryOperation, org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptNumberLiteral, org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptRef {
public interface Builder {
public org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptExpression build();