summaryrefslogtreecommitdiffstats
path: root/Tools
diff options
context:
space:
mode:
Diffstat (limited to 'Tools')
-rw-r--r--Tools/compiler/compiler/transformer.py21
1 files changed, 16 insertions, 5 deletions
diff --git a/Tools/compiler/compiler/transformer.py b/Tools/compiler/compiler/transformer.py
index 7f61595..323aa20 100644
--- a/Tools/compiler/compiler/transformer.py
+++ b/Tools/compiler/compiler/transformer.py
@@ -588,9 +588,11 @@ class Transformer:
if nodelist[i-1][0] == token.LEFTSHIFT:
node = LeftShift([node, right])
node.lineno = nodelist[1][2]
- else:
+ elif nodelist[i-1][0] == token.RIGHTSHIFT:
node = RightShift([node, right])
node.lineno = nodelist[1][2]
+ else:
+ raise ValueError, "unexpected token: %s" % nodelist[i-1][0]
return node
def arith_expr(self, nodelist):
@@ -600,9 +602,11 @@ class Transformer:
if nodelist[i-1][0] == token.PLUS:
node = Add([node, right])
node.lineno = nodelist[1][2]
- else:
+ elif nodelist[i-1][0] == token.MINUS:
node = Sub([node, right])
node.lineno = nodelist[1][2]
+ else:
+ raise ValueError, "unexpected token: %s" % nodelist[i-1][0]
return node
def term(self, nodelist):
@@ -614,8 +618,12 @@ class Transformer:
node = Mul([node, right])
elif t == token.SLASH:
node = Div([node, right])
- else:
+ elif t == token.PERCENT:
node = Mod([node, right])
+ elif t == token.DOUBLESLASH:
+ node = FloorDiv([node, right])
+ else:
+ raise ValueError, "unexpected token: %s" % t
node.lineno = nodelist[1][2]
return node
@@ -750,10 +758,13 @@ class Transformer:
if i < len(nodelist):
# should be DOUBLESTAR or STAR STAR
- if nodelist[i][0] == token.DOUBLESTAR:
+ t = nodelist[i][0]
+ if t == token.DOUBLESTAR:
node = nodelist[i+1]
- else:
+ elif t == token.STARSTAR:
node = nodelist[i+2]
+ else:
+ raise ValueError, "unexpected token: %s" % t
names.append(node[1])
flags = flags | CO_VARKEYWORDS