[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