Refactored ExpressionPrinter and ExpressionVisitor
Added '?:' expression