diff options
author | Martin <marcin.j.chrzanowski@gmail.com> | 2019-11-23 16:18:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-23 16:18:49 +0100 |
commit | 22f6a3082d5e9698e3be4208ca68cd6724239fd0 (patch) | |
tree | 6dd78ad1333c18f3b1578b2958d9c7ef687a25c1 /src/main/java/pl/edu/mimuw/cloudatlas/interpreter | |
parent | d683a761b2710a252b0bfb1b3f0879a60247bb50 (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.java | 9 | ||||
-rw-r--r-- | src/main/java/pl/edu/mimuw/cloudatlas/interpreter/ResultColumn.java | 16 |
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; } } |