diff options
author | Mark Dickinson <dickinsm@gmail.com> | 2010-06-30 11:45:53 +0000 |
---|---|---|
committer | Mark Dickinson <dickinsm@gmail.com> | 2010-06-30 11:45:53 +0000 |
commit | cba8c10b5c262f41873ac877d25c242823ab668c (patch) | |
tree | f3036f5038379647fb4bff4aa4cd7715a3a27882 /Demo/parser/unparse.py | |
parent | abe52d749c89a7c8860cdc191a940b8b6b314dab (diff) | |
download | cpython-git-cba8c10b5c262f41873ac877d25c242823ab668c.tar.gz |
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Diffstat (limited to 'Demo/parser/unparse.py')
-rw-r--r-- | Demo/parser/unparse.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/Demo/parser/unparse.py b/Demo/parser/unparse.py index e1c27192c2..e96ef5477b 100644 --- a/Demo/parser/unparse.py +++ b/Demo/parser/unparse.py @@ -6,6 +6,10 @@ import tokenize import io import os +# Large float and imaginary literals get turned into infinities in the AST. +# We unparse those infinities to INFSTR. +INFSTR = "1e" + repr(sys.float_info.max_10_exp + 1) + def interleave(inter, f, seq): """Call f on each item in seq, calling inter() in between. """ @@ -311,11 +315,8 @@ class Unparser: self.write(t.id) def _Num(self, t): - if isinstance(t.n, float) and math.isinf(t.n): - # Subsitute overflowing decimal literal for AST infinity - self.write("1e" + repr(sys.float_info.max_10_exp + 1)) - else: - self.write(repr(t.n)) + # Substitute overflowing decimal literal for AST infinities. + self.write(repr(t.n).replace("inf", INFSTR)) def _List(self, t): self.write("[") |