diff options
author | Guido van Rossum <guido@python.org> | 2001-08-08 05:00:18 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2001-08-08 05:00:18 (GMT) |
commit | 4668b000a1d9113394941ad39875c827634feb49 (patch) | |
tree | 734560442fef1ce34912ceb772099b9a006e010a /Parser/tokenizer.c | |
parent | 074c9d2b2081237c1071a3775f6e36252cf16ad7 (diff) | |
download | cpython-4668b000a1d9113394941ad39875c827634feb49.zip cpython-4668b000a1d9113394941ad39875c827634feb49.tar.gz cpython-4668b000a1d9113394941ad39875c827634feb49.tar.bz2 |
Implement PEP 238 in its (almost) full glory.
This introduces:
- A new operator // that means floor division (the kind of division
where 1/2 is 0).
- The "future division" statement ("from __future__ import division)
which changes the meaning of the / operator to implement "true
division" (where 1/2 is 0.5).
- New overloadable operators __truediv__ and __floordiv__.
- New slots in the PyNumberMethods struct for true and floor division,
new abstract APIs for them, new opcodes, and so on.
I emphasize that without the future division statement, the semantics
of / will remain unchanged until Python 3.0.
Not yet implemented are warnings (default off) when / is used with int
or long arguments.
This has been on display since 7/31 as SF patch #443474.
Flames to /dev/null.
Diffstat (limited to 'Parser/tokenizer.c')
-rw-r--r-- | Parser/tokenizer.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index b783e80..2397969 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -80,6 +80,8 @@ char *_PyParser_TokenNames[] = { "LEFTSHIFTEQUAL", "RIGHTSHIFTEQUAL", "DOUBLESTAREQUAL", + "DOUBLESLASH", + "DOUBLESLASHEQUAL", /* This table must match the #defines in token.h! */ "OP", "<ERRORTOKEN>", @@ -408,6 +410,7 @@ PyToken_TwoChars(int c1, int c2) break; case '/': switch (c2) { + case '/': return DOUBLESLASH; case '=': return SLASHEQUAL; } break; @@ -469,6 +472,16 @@ PyToken_ThreeChars(int c1, int c2, int c3) break; } break; + case '/': + switch (c2) { + case '/': + switch (c3) { + case '=': + return DOUBLESLASHEQUAL; + } + break; + } + break; } return OP; } |