summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-08-01 11:20:03 +0100
committerMichael Williamson <mike@zwobble.org>2026-08-01 11:20:03 +0100
commit2a69c9d95420784198251ab23a4828775e901f44 (patch)
treeaac31ce15c1aa348e732d44b46365e00b4589b85
parent164f64faac14c9687419d6accf9a7146da5441e8 (diff)
Add greater than to Java AST
-rw-r--r--hobgoblin/src/output/lang/java/ast.hob3
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriter.java3
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaBinaryOperator.java3
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java13
4 files changed, 20 insertions, 2 deletions
diff --git a/hobgoblin/src/output/lang/java/ast.hob b/hobgoblin/src/output/lang/java/ast.hob
index f70d485..b1352cc 100644
--- a/hobgoblin/src/output/lang/java/ast.hob
+++ b/hobgoblin/src/output/lang/java/ast.hob
@@ -251,10 +251,11 @@ enum JavaBinaryOperator {
variant bitwiseAnd;
variant bitwiseOr;
variant equalTo;
- variant multiply;
+ variant greaterThan;
variant leftShift;
variant lessThan;
variant logicalAnd;
+ variant multiply;
variant notEqualTo;
variant unsignedRightShift;
}
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 d580f14..54b4c12 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
@@ -732,6 +732,7 @@ public class JavaWriter implements AutoCloseable {
case BITWISE_AND -> JavaPrecedence.BITWISE_AND;
case BITWISE_OR -> JavaPrecedence.BITWISE_INCLUSIVE_OR;
case EQUAL_TO -> JavaPrecedence.EQUALITY;
+ case GREATER_THAN -> JavaPrecedence.RELATIONAL;
case LOGICAL_AND -> JavaPrecedence.LOGICAL_AND;
case LEFT_SHIFT -> JavaPrecedence.SHIFT;
case LESS_THAN -> JavaPrecedence.RELATIONAL;
@@ -769,6 +770,7 @@ public class JavaWriter implements AutoCloseable {
case BITWISE_AND -> "&";
case BITWISE_OR -> "|";
case EQUAL_TO -> "==";
+ case GREATER_THAN -> ">";
case LEFT_SHIFT -> "<<";
case LESS_THAN -> "<";
case LOGICAL_AND -> "&&";
@@ -791,6 +793,7 @@ public class JavaWriter implements AutoCloseable {
case BITWISE_AND -> true;
case BITWISE_OR -> true;
case EQUAL_TO -> true;
+ case GREATER_THAN -> true;
case LEFT_SHIFT -> true;
case LESS_THAN -> true;
case LOGICAL_AND -> true;
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 e9c2a54..d098691 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
@@ -11,10 +11,11 @@ public enum JavaBinaryOperator {
BITWISE_AND,
BITWISE_OR,
EQUAL_TO,
- MULTIPLY,
+ GREATER_THAN,
LEFT_SHIFT,
LESS_THAN,
LOGICAL_AND,
+ MULTIPLY,
NOT_EQUAL_TO,
UNSIGNED_RIGHT_SHIFT
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java
index 15dbbbd..50f581e 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/java/JavaWriterTests.java
@@ -1349,6 +1349,19 @@ public class JavaWriterTests {
}
@Test
+ public void binaryOperationGreaterThan() throws IOException {
+ var java = new JavaBinaryOperation(
+ JavaBinaryOperator.GREATER_THAN,
+ new JavaRef(JavaIdentifier.of("x")),
+ new JavaIntegerLiteral(42)
+ );
+
+ var string = write(writer -> writer.writeTopLevelExpression(java));
+
+ assertThat(string, equalTo("x > 42"));
+ }
+
+ @Test
public void binaryOperationLeftShift() throws IOException {
var java = JavaBinaryOperation.arbitrary()
.withOperator(JavaBinaryOperator.LEFT_SHIFT)