package jeql.syntax; import jeql.engine.Scope; public class ConditionalExpressionNode extends ParseTreeNode { private ParseTreeNode condExpr; private ParseTreeNode expr1; private ParseTreeNode expr2; public ConditionalExpressionNode(ParseTreeNode condExpr, ParseTreeNode expr1, ParseTreeNode expr2 ) { this.condExpr = condExpr; this.expr1 = expr1; this.expr2 = expr2; } public Class getType(Scope scope) { return expr1.getType(scope); } public void bind(Scope scope) { condExpr.bind(scope); expr1.bind(scope); expr2.bind(scope); } public Object eval(Scope scope) { Object condVal = condExpr.eval(scope); boolean cond = condVal == null ? false : ((Boolean) condVal).booleanValue(); if (cond) return expr1.eval(scope); else return expr2.eval(scope); } }