diff options
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("[") |