summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES1
-rw-r--r--sqlparse/lexer.py1
-rw-r--r--tests/test_parse.py7
3 files changed, 9 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index a812b29..50d971f 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,7 @@ Development Version
Enhancements
* New option to truncate long string literals when formatting.
+* Scientific numbers are pares correctly (issue107).
Release 0.1.8 (Jun 29, 2013)
diff --git a/sqlparse/lexer.py b/sqlparse/lexer.py
index 00d0462..45ba4cb 100644
--- a/sqlparse/lexer.py
+++ b/sqlparse/lexer.py
@@ -190,6 +190,7 @@ class Lexer(object):
(r'@[^\W\d_]\w+', tokens.Name),
(r'[^\W\d_]\w*(?=[.(])', tokens.Name), # see issue39
(r'[-]?0x[0-9a-fA-F]+', tokens.Number.Hexadecimal),
+ (r'[-]?[0-9]*(\.[0-9]+)?[eE][-]?[0-9]+', tokens.Number.Float),
(r'[-]?[0-9]*\.[0-9]+', tokens.Number.Float),
(r'[-]?[0-9]+', tokens.Number.Integer),
# TODO: Backslash escapes?
diff --git a/tests/test_parse.py b/tests/test_parse.py
index 10da8e1..953a237 100644
--- a/tests/test_parse.py
+++ b/tests/test_parse.py
@@ -150,3 +150,10 @@ def test_placeholder(ph):
p = sqlparse.parse(ph)[0].tokens
assert len(p) == 1
assert p[0].ttype is T.Name.Placeholder
+
+
+@pytest.mark.parametrize('num', ['6.67428E-8', '1.988e33', '1e-12'])
+def test_scientific_numbers(num):
+ p = sqlparse.parse(num)[0].tokens
+ assert len(p) == 1
+ assert p[0].ttype is T.Number.Float