From f37d49367c1ce59ae35dda124d85f9732d0cb484 Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Sat, 24 Aug 2024 03:08:23 +0800 Subject: Add tuples. --- ast/src/main/java/lv/enes/orang/ast/EmptyTupleLiteral.java | 14 ++++++++++++++ ast/src/main/java/lv/enes/orang/ast/ExpressionVisitor.java | 3 ++- ast/src/main/java/lv/enes/orang/ast/TupleExpression.java | 13 +++++++++++++ ast/src/main/java/lv/enes/orang/ast/VoidExpression.java | 14 -------------- 4 files changed, 29 insertions(+), 15 deletions(-) create mode 100644 ast/src/main/java/lv/enes/orang/ast/EmptyTupleLiteral.java create mode 100644 ast/src/main/java/lv/enes/orang/ast/TupleExpression.java delete mode 100644 ast/src/main/java/lv/enes/orang/ast/VoidExpression.java (limited to 'ast/src/main/java/lv') diff --git a/ast/src/main/java/lv/enes/orang/ast/EmptyTupleLiteral.java b/ast/src/main/java/lv/enes/orang/ast/EmptyTupleLiteral.java new file mode 100644 index 0000000..a96580f --- /dev/null +++ b/ast/src/main/java/lv/enes/orang/ast/EmptyTupleLiteral.java @@ -0,0 +1,14 @@ +package lv.enes.orang.ast; + +import lv.enes.orang.core.OrangException; + +public final class EmptyTupleLiteral implements Expression { + public static final EmptyTupleLiteral INSTANCE = new EmptyTupleLiteral(); + + private EmptyTupleLiteral() {} + + @Override + public R accept(ExpressionVisitor visitor) throws E { + return visitor.visitEmptyTupleExpression(); + } +} diff --git a/ast/src/main/java/lv/enes/orang/ast/ExpressionVisitor.java b/ast/src/main/java/lv/enes/orang/ast/ExpressionVisitor.java index 70f8a5e..c32b429 100644 --- a/ast/src/main/java/lv/enes/orang/ast/ExpressionVisitor.java +++ b/ast/src/main/java/lv/enes/orang/ast/ExpressionVisitor.java @@ -12,12 +12,13 @@ public interface ExpressionVisitor { R visitBinaryExpression(BinaryExpression expr) throws E; R visitCallExpression(CallExpression expr) throws E; R visitDoExpression(DoExpression expr) throws E; + R visitEmptyTupleExpression() throws E; R visitFnExpression(FnExpression expr) throws E; R visitIfElseExpression(IfElseExpression expr) throws E; R visitIntLiteral(IntLiteral expr) throws E; R visitLetInExpression(LetInExpression expr) throws E; R visitStringLiteral(StringLiteral expr) throws E; + R visitTupleExpression(TupleExpression expr) throws E; R visitUnaryExpression(UnaryExpression expr) throws E; R visitVariable(VariableExpression expr) throws E; - R visitVoidExpression() throws E; } diff --git a/ast/src/main/java/lv/enes/orang/ast/TupleExpression.java b/ast/src/main/java/lv/enes/orang/ast/TupleExpression.java new file mode 100644 index 0000000..9df418d --- /dev/null +++ b/ast/src/main/java/lv/enes/orang/ast/TupleExpression.java @@ -0,0 +1,13 @@ +package lv.enes.orang.ast; + +import lv.enes.orang.core.OrangException; +import lv.enes.orang.utils.NonEmptyList; + +public record TupleExpression(NonEmptyList children) implements Expression { + // assert children.size() >= 2 + + @Override + public R accept(ExpressionVisitor visitor) throws E { + return visitor.visitTupleExpression(this); + } +} diff --git a/ast/src/main/java/lv/enes/orang/ast/VoidExpression.java b/ast/src/main/java/lv/enes/orang/ast/VoidExpression.java deleted file mode 100644 index 39d164d..0000000 --- a/ast/src/main/java/lv/enes/orang/ast/VoidExpression.java +++ /dev/null @@ -1,14 +0,0 @@ -package lv.enes.orang.ast; - -import lv.enes.orang.core.OrangException; - -public final class VoidExpression implements Expression { - public static final VoidExpression INSTANCE = new VoidExpression(); - - private VoidExpression() {} - - @Override - public R accept(ExpressionVisitor visitor) throws E { - return visitor.visitVoidExpression(); - } -} -- cgit v1.2.3