diff --git a/Lib/ast.py b/Lib/ast.py
index aab61d7..4b2063b 100644
--- a/Lib/ast.py
+++ b/Lib/ast.py
@@ -65,19 +65,25 @@
         elif isinstance(node, Name):
             if node.id in _safe_names:
                 return _safe_names[node.id]
+        elif isinstance(node, UnaryOp) and \
+             isinstance(node.op, (UAdd, USub)) and \
+             isinstance(node.operand, (Num, UnaryOp, BinOp)):
+            operand = _convert(node.operand)
+            if isinstance(node.op, UAdd):
+                return + operand
+            else:
+                return - operand
         elif isinstance(node, BinOp) and \
              isinstance(node.op, (Add, Sub)) and \
-             isinstance(node.right, Num) and \
-             isinstance(node.right.n, complex) and \
-             isinstance(node.left, Num) and \
-             isinstance(node.left.n, (int, float)):
-            left = node.left.n
-            right = node.right.n
+             isinstance(node.right, (Num, UnaryOp, BinOp)) and \
+             isinstance(node.left, (Num, UnaryOp, BinOp)):
+            left = _convert(node.left)
+            right = _convert(node.right)
             if isinstance(node.op, Add):
                 return left + right
             else:
                 return left - right
-        raise ValueError('malformed string')
+        raise ValueError('malformed node or string: ' + repr(node))
     return _convert(node_or_string)
 
 
diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py
index f00a415..b5295ef 100644
--- a/Lib/test/test_ast.py
+++ b/Lib/test/test_ast.py
@@ -288,12 +288,14 @@
         self.assertEqual(ast.literal_eval('{1, 2, 3}'), {1, 2, 3})
         self.assertEqual(ast.literal_eval('b"hi"'), b"hi")
         self.assertRaises(ValueError, ast.literal_eval, 'foo()')
+        self.assertEqual(ast.literal_eval('-6'), -6)
+        self.assertEqual(ast.literal_eval('-6j+3'), 3-6j)
+        self.assertEqual(ast.literal_eval('3.25'), 3.25)
 
     def test_literal_eval_issue4907(self):
         self.assertEqual(ast.literal_eval('2j'), 2j)
         self.assertEqual(ast.literal_eval('10 + 2j'), 10 + 2j)
         self.assertEqual(ast.literal_eval('1.5 - 2j'), 1.5 - 2j)
-        self.assertRaises(ValueError, ast.literal_eval, '2 + (3 + 4j)')
 
 
 def test_main():
