From acbe6e1325232f47f323e0207de74a049403d4bb Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 10 Jul 2026 20:56:56 +0100 Subject: Add add operator to Java AST --- .../org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java | 3 +++ .../hobgoblin/compiler/output/lang/java/ast/JavaBinaryOperation.java | 2 +- .../hobgoblin/compiler/output/lang/java/ast/JavaBinaryOperator.java | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src/main/java/org/zwobble') 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 18df14e..aa1f3c1 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 @@ -604,6 +604,7 @@ public class JavaWriter implements AutoCloseable { private static JavaPrecedence precedence(JavaBinaryOperation binaryOperation) { return switch (binaryOperation.operator()) { + case ADD -> JavaPrecedence.ADDITIVE; case ASSIGN -> JavaPrecedence.ASSIGNMENT; case BITWISE_AND -> JavaPrecedence.BITWISE_AND; case BITWISE_OR -> JavaPrecedence.BITWISE_INCLUSIVE_OR; @@ -626,6 +627,7 @@ public class JavaWriter implements AutoCloseable { ); this.writer.write(" "); this.writer.write(switch (binaryOperation.operator()) { + case ADD -> "+"; case ASSIGN -> "="; case BITWISE_AND -> "&"; case BITWISE_OR -> "|"; @@ -645,6 +647,7 @@ public class JavaWriter implements AutoCloseable { private boolean isLeftAssociative(JavaBinaryOperator operator) { return switch (operator) { + case ADD -> true; case ASSIGN -> false; case BITWISE_AND -> true; case BITWISE_OR -> true; diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBinaryOperation.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBinaryOperation.java index cb1c0ef..e638b7f 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBinaryOperation.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBinaryOperation.java @@ -7,7 +7,7 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast; public record JavaBinaryOperation(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBinaryOperator operator, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression left, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression right) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression { public static org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBinaryOperation.Builder arbitrary() { - return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBinaryOperation.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBinaryOperator.ASSIGN, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBooleanLiteral.arbitrary().build(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBooleanLiteral.arbitrary().build()); + return new org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBinaryOperation.Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBinaryOperator.ADD, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBooleanLiteral.arbitrary().build(), org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBooleanLiteral.arbitrary().build()); } public record Builder(org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBinaryOperator operator, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression left, org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression right) implements org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaExpression.Builder { diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBinaryOperator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBinaryOperator.java index 4eaa2a5..e51ad40 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBinaryOperator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBinaryOperator.java @@ -6,6 +6,7 @@ package org.zwobble.hobgoblin.compiler.output.lang.java.ast; // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaBinaryOperator imports public enum JavaBinaryOperator { + ADD, ASSIGN, BITWISE_AND, BITWISE_OR, -- cgit v1.2.3