public Void visitConditionDirective(ConditionDirectiveContext ctx) {
    	if (ctx.LEFT_PAREN() != null)
            appendCode("(");
        switch (ctx.conditionDirective().size()) {
        case 0:
            if (ctx.definedCondition() != null)
            	visitDefinedCondition(ctx.definedCondition());
            break;
        case 1:
        	// TODO: Fix the bug! COMMENT token will interfere with this
        	//       negative condition.
            if (ctx.EXCAL() != null)
                appendCode("! ");
            visitConditionDirective(ctx.conditionDirective(0));
            break;
        case 2:
        	visitConditionDirective(ctx.conditionDirective(0));
            if (ctx.CPP_AND() != null)
                appendCode(" && ");
            else if (ctx.CPP_OR() != null)
                appendCode(" || ");
            visitConditionDirective(ctx.conditionDirective(1));
            break;
        }
        if (ctx.RIGHT_PAREN() != null)
            appendCode(")");
        return null;
    }