package com.pixelmaid.dresscode.antlr.types.tree; import com.pixelmaid.dresscode.antlr.types.VarType; public class TernaryNode extends NodeEvent implements DCNode { private DCNode condition; private DCNode ifTrue; private DCNode ifFalse; public TernaryNode(DCNode c, DCNode t, DCNode f) { condition = c; ifTrue = t; ifFalse = f; } @Override public VarType evaluate() { VarType a = condition.evaluate(); if(!a.isBoolean()) { throw new RuntimeException("not a boolean expression: " + condition + ", in: " + this); } return a.asBoolean() ? ifTrue.evaluate() : ifFalse.evaluate(); } @Override public String toString() { return String.format("(%s ? %s : %s)", condition, ifTrue, ifFalse); } }