Make ELLIPSIS a separate token. This makes it a syntax error to write ". . ." for Ellipsis.
diff --git a/Lib/compiler/transformer.py b/Lib/compiler/transformer.py
index 79b702c..f07ec97 100644
--- a/Lib/compiler/transformer.py
+++ b/Lib/compiler/transformer.py
@@ -113,7 +113,7 @@
token.LBRACE: self.atom_lbrace,
token.NUMBER: self.atom_number,
token.STRING: self.atom_string,
- token.DOT: self.atom_ellipsis,
+ token.ELLIPSIS: self.atom_ellipsis,
token.NAME: self.atom_name,
}
self.encoding = None
diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py
index 1a14756..bd80db6 100644
--- a/Lib/test/test_grammar.py
+++ b/Lib/test/test_grammar.py
@@ -121,6 +121,7 @@
def testEllipsis(self):
x = ...
self.assert_(x is Ellipsis)
+ self.assertRaises(SyntaxError, eval, ".. .")
class GrammarTests(unittest.TestCase):
diff --git a/Lib/token.py b/Lib/token.py
index 147536c..eb48e76 100755
--- a/Lib/token.py
+++ b/Lib/token.py
@@ -61,9 +61,10 @@
DOUBLESLASHEQUAL = 49
AT = 50
RARROW = 51
-OP = 52
-ERRORTOKEN = 53
-N_TOKENS = 54
+ELLIPSIS = 52
+OP = 53
+ERRORTOKEN = 54
+N_TOKENS = 55
NT_OFFSET = 256
#--end constants--
diff --git a/Lib/tokenize.py b/Lib/tokenize.py
index e502da9..cda82ca 100644
--- a/Lib/tokenize.py
+++ b/Lib/tokenize.py
@@ -83,7 +83,7 @@
r"~")
Bracket = '[][(){}]'
-Special = group(r'\r?\n', r'[:;.,@]')
+Special = group(r'\r?\n', r'\.\.\.', r'[:;.,@]')
Funny = group(Operator, Bracket, Special)
PlainToken = group(Number, Funny, String, Name)
@@ -334,8 +334,8 @@
spos, epos, pos = (lnum, start), (lnum, end), end
token, initial = line[start:end], line[start]
- if initial in numchars or \
- (initial == '.' and token != '.'): # ordinary number
+ if (initial in numchars or # ordinary number
+ (initial == '.' and token != '.' and token != '...')):
yield (NUMBER, token, spos, epos, line)
elif initial in '\r\n':
yield (NL if parenlev > 0 else NEWLINE,