PyTokenizer_Get: error if exponent contains no digits (3e, 2.0e+, ...).
raise TestFailed, "non-default args after default"
except SyntaxError:
pass
+
+if verbose:
+ print "testing bad float literals"
+
+def expect_error(s):
+ try:
+ eval(s)
+ raise TestFailed("%r accepted" % s)
+ except SyntaxError:
+ pass
+
+expect_error("2e")
+expect_error("2.0e+")
+expect_error("1e-")
+expect_error("3-4e/21")
if (c == 'l' || c == 'L')
c = tok_nextc(tok);
else {
- /* Accept floating point numbers.
- XXX This accepts incomplete things like
- XXX 12e or 1e+; worry run-time */
+ /* Accept floating point numbers. */
if (c == '.') {
fraction:
/* Fraction */
c = tok_nextc(tok);
if (c == '+' || c == '-')
c = tok_nextc(tok);
- while (isdigit(c)) {
- c = tok_nextc(tok);
+ if (!isdigit(c)) {
+ tok->done = E_TOKEN;
+ tok_backup(tok, c);
+ return ERRORTOKEN;
}
+ do {
+ c = tok_nextc(tok);
+ } while (isdigit(c));
}
#ifndef WITHOUT_COMPLEX
if (c == 'j' || c == 'J')