[Python-checkins] CVS: python/dist/src/Tools/compiler/compiler transformer.py,1.24,1.25
Jeremy Hylton
jhylton@users.sourceforge.net
Wed, 29 Aug 2001 11:12:32 -0700
Update of /cvsroot/python/python/dist/src/Tools/compiler/compiler
In directory usw-pr-cvs1:/tmp/cvs-serv16108
Modified Files:
transformer.py
Log Message:
Add support for // and //=.
Avoid if/elif/elif/else tests where the final else is supposed to
handle exactly one case instead of all other cases. When the list of
operators is extended, the catchall else treats all new operators as
the last operator in the set of tests. Instead, raise an exception if
an unexpected operator occurs.
Index: transformer.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/compiler/compiler/transformer.py,v
retrieving revision 1.24
retrieving revision 1.25
diff -C2 -d -r1.24 -r1.25
*** transformer.py 2001/08/29 17:19:02 1.24
--- transformer.py 2001/08/29 18:12:30 1.25
***************
*** 589,595 ****
node = LeftShift([node, right])
node.lineno = nodelist[1][2]
! else:
node = RightShift([node, right])
node.lineno = nodelist[1][2]
return node
--- 589,597 ----
node = LeftShift([node, right])
node.lineno = nodelist[1][2]
! 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
***************
*** 601,607 ****
node = Add([node, right])
node.lineno = nodelist[1][2]
! else:
node = Sub([node, right])
node.lineno = nodelist[1][2]
return node
--- 603,611 ----
node = Add([node, right])
node.lineno = nodelist[1][2]
! 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
***************
*** 615,620 ****
elif t == token.SLASH:
node = Div([node, right])
! else:
node = Mod([node, right])
node.lineno = nodelist[1][2]
return node
--- 619,628 ----
elif t == token.SLASH:
node = Div([node, right])
! 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
***************
*** 751,758 ****
if i < len(nodelist):
# should be DOUBLESTAR or STAR STAR
! if nodelist[i][0] == token.DOUBLESTAR:
node = nodelist[i+1]
! else:
node = nodelist[i+2]
names.append(node[1])
flags = flags | CO_VARKEYWORDS
--- 759,769 ----
if i < len(nodelist):
# should be DOUBLESTAR or STAR STAR
! t = nodelist[i][0]
! if t == token.DOUBLESTAR:
node = nodelist[i+1]
! elif t == token.STARSTAR:
node = nodelist[i+2]
+ else:
+ raise ValueError, "unexpected token: %s" % t
names.append(node[1])
flags = flags | CO_VARKEYWORDS