m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pl/edu/mimuw/cloudatlas/interpreter
diff options
context:
space:
mode:
authorMartin <marcin.j.chrzanowski@gmail.com>2019-11-23 16:18:49 +0100
committerGitHub <noreply@github.com>2019-11-23 16:18:49 +0100
commit22f6a3082d5e9698e3be4208ca68cd6724239fd0 (patch)
tree6dd78ad1333c18f3b1578b2958d9c7ef687a25c1 /src/main/java/pl/edu/mimuw/cloudatlas/interpreter
parentd683a761b2710a252b0bfb1b3f0879a60247bb50 (diff)
Interpreter conversions (#26)
Diffstat (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/interpreter')
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Interpreter.java9
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/interpreter/ResultColumn.java16
2 files changed, 18 insertions, 7 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Interpreter.java b/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Interpreter.java
index 289f99d..6129f48 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Interpreter.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Interpreter.java
@@ -329,8 +329,13 @@ public class Interpreter {
}
public Result visit(CondExprAndC expr, Environment env) {
- // TODO
- throw new UnsupportedOperationException("CondExprAndC Not yet implemented");
+ try {
+ Result left = expr.condexpr_1.accept(new CondExprInterpreter(), env);
+ Result right = expr.condexpr_2.accept(new CondExprInterpreter(), env);
+ return left.and(right);
+ } catch(Exception exception) {
+ throw new InsideQueryException(PrettyPrinter.print(expr), exception);
+ }
}
public Result visit(CondExprNotC expr, Environment env) {
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/ResultColumn.java b/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/ResultColumn.java
index b551955..1c0db30 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/ResultColumn.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/ResultColumn.java
@@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import pl.edu.mimuw.cloudatlas.model.Type;
+import pl.edu.mimuw.cloudatlas.model.TypePrimitive;
import pl.edu.mimuw.cloudatlas.model.TypeCollection;
import pl.edu.mimuw.cloudatlas.model.Value;
import pl.edu.mimuw.cloudatlas.model.ValueBoolean;
@@ -100,7 +101,7 @@ class ResultColumn extends Result {
@Override
public Result random(int size) {
- return new ResultColumn(
+ return new ResultSingle(
randomList(
new ValueList(
column,
@@ -124,13 +125,18 @@ class ResultColumn extends Result {
@Override
public ResultSingle isNull() {
- throw new UnsupportedOperationException("Operation isNull not supported yet.");
- // return new ResultSingle(new ValueBoolean(value.isNull()));
+ return new ResultSingle(new ValueBoolean(true));
}
@Override
public Type getType() {
- throw new UnsupportedOperationException("Operation getType not supported yet.");
- // return value.getType();
+ Type type = TypePrimitive.NULL;
+ for (Value value : column) {
+ if (value.getType() != TypePrimitive.NULL) {
+ type = value.getType();
+ }
+ }
+
+ return type;
}
}