summaryrefslogtreecommitdiff
path: root/ast
diff options
context:
space:
mode:
Diffstat (limited to 'ast')
-rw-r--r--ast/src/main/java/lv/enes/orang/ast/EmptyTupleLiteral.java14
-rw-r--r--ast/src/main/java/lv/enes/orang/ast/ExpressionVisitor.java3
-rw-r--r--ast/src/main/java/lv/enes/orang/ast/TupleExpression.java13
-rw-r--r--ast/src/main/java/lv/enes/orang/ast/VoidExpression.java14
4 files changed, 29 insertions, 15 deletions
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 @@
1package lv.enes.orang.ast;
2
3import lv.enes.orang.core.OrangException;
4
5public final class EmptyTupleLiteral implements Expression {
6 public static final EmptyTupleLiteral INSTANCE = new EmptyTupleLiteral();
7
8 private EmptyTupleLiteral() {}
9
10 @Override
11 public <R, E extends OrangException> R accept(ExpressionVisitor<R, E> visitor) throws E {
12 return visitor.visitEmptyTupleExpression();
13 }
14}
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, E extends OrangException> {
12 R visitBinaryExpression(BinaryExpression expr) throws E; 12 R visitBinaryExpression(BinaryExpression expr) throws E;
13 R visitCallExpression(CallExpression expr) throws E; 13 R visitCallExpression(CallExpression expr) throws E;
14 R visitDoExpression(DoExpression expr) throws E; 14 R visitDoExpression(DoExpression expr) throws E;
15 R visitEmptyTupleExpression() throws E;
15 R visitFnExpression(FnExpression expr) throws E; 16 R visitFnExpression(FnExpression expr) throws E;
16 R visitIfElseExpression(IfElseExpression expr) throws E; 17 R visitIfElseExpression(IfElseExpression expr) throws E;
17 R visitIntLiteral(IntLiteral expr) throws E; 18 R visitIntLiteral(IntLiteral expr) throws E;
18 R visitLetInExpression(LetInExpression expr) throws E; 19 R visitLetInExpression(LetInExpression expr) throws E;
19 R visitStringLiteral(StringLiteral expr) throws E; 20 R visitStringLiteral(StringLiteral expr) throws E;
21 R visitTupleExpression(TupleExpression expr) throws E;
20 R visitUnaryExpression(UnaryExpression expr) throws E; 22 R visitUnaryExpression(UnaryExpression expr) throws E;
21 R visitVariable(VariableExpression expr) throws E; 23 R visitVariable(VariableExpression expr) throws E;
22 R visitVoidExpression() throws E;
23} 24}
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 @@
1package lv.enes.orang.ast;
2
3import lv.enes.orang.core.OrangException;
4import lv.enes.orang.utils.NonEmptyList;
5
6public record TupleExpression(NonEmptyList<Expression> children) implements Expression {
7 // assert children.size() >= 2
8
9 @Override
10 public <R, E extends OrangException> R accept(ExpressionVisitor<R, E> visitor) throws E {
11 return visitor.visitTupleExpression(this);
12 }
13}
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 @@
1package lv.enes.orang.ast;
2
3import lv.enes.orang.core.OrangException;
4
5public final class VoidExpression implements Expression {
6 public static final VoidExpression INSTANCE = new VoidExpression();
7
8 private VoidExpression() {}
9
10 @Override
11 public <R, E extends OrangException> R accept(ExpressionVisitor<R, E> visitor) throws E {
12 return visitor.visitVoidExpression();
13 }
14}