aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language/src/main/java/tools/refinery/language/expressions/TermInterpreter.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/language/src/main/java/tools/refinery/language/expressions/TermInterpreter.java')
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/expressions/TermInterpreter.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/subprojects/language/src/main/java/tools/refinery/language/expressions/TermInterpreter.java b/subprojects/language/src/main/java/tools/refinery/language/expressions/TermInterpreter.java
new file mode 100644
index 00000000..122785f2
--- /dev/null
+++ b/subprojects/language/src/main/java/tools/refinery/language/expressions/TermInterpreter.java
@@ -0,0 +1,29 @@
1/*
2 * SPDX-FileCopyrightText: 2024 The Refinery Authors <https://refinery.tools/>
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6package tools.refinery.language.expressions;
7
8import tools.refinery.language.model.problem.BinaryOp;
9import tools.refinery.language.model.problem.UnaryOp;
10import tools.refinery.language.typesystem.AggregatorName;
11import tools.refinery.language.typesystem.DataExprType;
12
13import java.util.Optional;
14
15public interface TermInterpreter {
16 Optional<DataExprType> getNegationType(DataExprType type);
17
18 Optional<DataExprType> getUnaryOperationType(UnaryOp op, DataExprType type);
19
20 boolean isComparisonSupported(DataExprType type);
21
22 boolean isRangeSupported(DataExprType type);
23
24 Optional<DataExprType> getBinaryOperationType(BinaryOp op, DataExprType leftType, DataExprType rightType);
25
26 boolean isCastSupported(DataExprType fromType, DataExprType toType);
27
28 Optional<DataExprType> getAggregationType(AggregatorName aggregator, DataExprType type);
29}