# File kwartz.rb, line 2421
        def translate_expr(expr_node, code='', level=0)
            node = expr_node
            case tkn = node.token
            when :variable
                code << '$'
                super(node, code, level)
            #when '[]', '{}'
            #  right = node.right
            #  if right.token == :string && right.left =~ /\A\w+\z/ then
            #      translate_expr(node.left, code, level)
            #      code << '.'
            #      code << right.left
            #  else
            #      super(node, code, level)
            #  end
            when '.+'
                code << '"'
                code << _translate_strcat(node)
                code << '"'
            when '!='
                if node.left.token == :null then
                    translate_expr(node.right, code, level)
                elsif node.right.token == :null then
                    translate_expr(node.left, code, level)
                else
                    super(node, code, level)
                end
            when '=='
                if node.left.token == :null then
                    node.token = '!'
                    node.left = node.right
                    node.right = nil
                elsif node.right.token == :null then
                    node.token = '!'
                    node.right = nil
                end
                super(node, code, level)
            when :empty, :notempty
                ## s==empty  => (!s || s==''),  s!=empty => (s && s!='')
                flag = (tkn == :empty)
                str_node = ExprNode.new(:string, '', nil)
                l_node   = flag ? ExprNode.new('!', node.left, nil) : node.left
                r_node   = ExprNode.new(flag ? '==' : '!=', node.left, str_node)
                node2    = ExprNode.new(flag ? '||' : '&&', l_node, r_node)
                code << encode('(')
                translate_expr(node2, code, level)
                code << encode(')')
            when :null
                msg = "velocity cannot support keyword 'null'."
                raise TranslationError.new(msg)
            else
                super(node, code, level)
            end
            return code
        end