aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter/Evaluator.java')
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/Evaluator.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java b/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java
index 863ccb0..6586f6a 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java
@@ -3,8 +3,10 @@ package org.zwobble.couscous.interpreter;
import org.zwobble.couscous.ast.Assignment;
import org.zwobble.couscous.ast.ExpressionNode;
import org.zwobble.couscous.ast.LiteralNode;
+import org.zwobble.couscous.ast.TernaryConditionalNode;
import org.zwobble.couscous.ast.VariableReferenceNode;
import org.zwobble.couscous.ast.visitors.ExpressionNodeVisitor;
+import org.zwobble.couscous.values.BooleanValue;
import org.zwobble.couscous.values.InterpreterValue;
import lombok.val;
@@ -40,4 +42,13 @@ public class Evaluator implements ExpressionNodeVisitor<InterpreterValue> {
environment.put(assignment.getTarget().getReferentId(), value);
return value;
}
+
+ @Override
+ public InterpreterValue visit(TernaryConditionalNode ternaryConditional) {
+ val condition = (BooleanValue)eval(ternaryConditional.getCondition());
+ val branch = condition.getValue()
+ ? ternaryConditional.getIfTrue()
+ : ternaryConditional.getIfFalse();
+ return eval(branch);
+ }
}