diff options
Diffstat (limited to 'ast/src/main')
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 @@ | |||
| 1 | package lv.enes.orang.ast; | ||
| 2 | |||
| 3 | import lv.enes.orang.core.OrangException; | ||
| 4 | |||
| 5 | public 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 @@ | |||
| 1 | package lv.enes.orang.ast; | ||
| 2 | |||
| 3 | import lv.enes.orang.core.OrangException; | ||
| 4 | import lv.enes.orang.utils.NonEmptyList; | ||
| 5 | |||
| 6 | public 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 @@ | |||
| 1 | package lv.enes.orang.ast; | ||
| 2 | |||
| 3 | import lv.enes.orang.core.OrangException; | ||
| 4 | |||
| 5 | public 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 | } | ||