@Override
    public SymbolInfo Evaluate(RuntimeContext cont) throws Exception {
        SymbolInfo eval_left = leftExpr.Evaluate(cont);
        SymbolInfo eval_right = rightExpr.Evaluate(cont);

        if (eval_left.Type == TypeInfo.TYPE_BOOL
                && eval_right.Type == TypeInfo.TYPE_BOOL) {
            SymbolInfo ret_val = new SymbolInfo();
            ret_val.Type = TypeInfo.TYPE_BOOL;
            ret_val.SymbolName = "";

            if (m_op == Token.TOK_AND) {
                ret_val.BoolValue = (eval_left.BoolValue && eval_right.BoolValue);
            } else if (m_op == Token.TOK_OR) {
                ret_val.BoolValue = (eval_left.BoolValue || eval_right.BoolValue);
            } else {
                return null;
            }
            return ret_val;
        }
        return null;
    }