[Python-checkins] CVS: python/dist/src/Tools/compiler/compiler transformer.py,1.19,1.20

Jeremy Hylton jhylton@users.sourceforge.net
Sun, 08 Apr 2001 21:27:14 -0700


Update of /cvsroot/python/python/dist/src/Tools/compiler/compiler
In directory usw-pr-cvs1:/tmp/cvs-serv1718/compiler

Modified Files:
	transformer.py 
Log Message:
Fix "import as" (has always skipping the as name)
Fix com_NEWLINE() so that is accepts arguments, which occurs for lines like:
    stmt; # note trailing semicolon
Add XXX about checking for assignment to list comps


Index: transformer.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/compiler/compiler/transformer.py,v
retrieving revision 1.19
retrieving revision 1.20
diff -C2 -r1.19 -r1.20
*** transformer.py	2000/11/06 16:03:52	1.19
--- transformer.py	2001/04/09 04:27:12	1.20
***************
*** 368,372 ****
              else:
                  for i in range(3, len(nodelist), 2):
!                     names.append(self.com_import_as_name(nodelist[i][1]))
              n = From(self.com_dotted_name(nodelist[1]), names)
              n.lineno = nodelist[0][2]
--- 368,372 ----
              else:
                  for i in range(3, len(nodelist), 2):
!                     names.append(self.com_import_as_name(nodelist[i]))
              n = From(self.com_dotted_name(nodelist[1]), names)
              n.lineno = nodelist[0][2]
***************
*** 693,697 ****
          return self._dispatch[node[0]](node[1:])
  
!     def com_NEWLINE(self):
          # A ';' at the end of a line can make a NEWLINE token appear
          # here, Render it harmless. (genc discards ('discard',
--- 693,697 ----
          return self._dispatch[node[0]](node[1:])
  
!     def com_NEWLINE(self, *args):
          # A ';' at the end of a line can make a NEWLINE token appear
          # here, Render it harmless. (genc discards ('discard',
***************
*** 785,796 ****
  
      def com_import_as_name(self, node):
!         if node == '*':
              return '*', None
!         if node[0] == token.NAME:
!             return node[1], None
!         assert len(node) == 4
!         assert node[2][1] == 'as'
!         assert node[3][0] == token.NAME
!         return node[1][1], node[3][1]
  
      def com_bases(self, node):
--- 785,799 ----
  
      def com_import_as_name(self, node):
!         if node[0] == token.STAR:
              return '*', None
!         assert node[0] == symbol.import_as_name
!         node = node[1:]
!         if len(node) == 1:
!             assert node[0][0] == token.NAME
!             return node[0][1], None
! 
!         assert node[1][1] == 'as', node
!         assert node[2][0] == token.NAME
!         return node[0][1], node[2][1]
  
      def com_bases(self, node):
***************
*** 964,967 ****
--- 967,973 ----
              # list_for: 'for' exprlist 'in' testlist [list_iter]
              # list_if: 'if' test [list_iter]
+ 
+             # XXX should raise SyntaxError for assignment
+             
              lineno = node[1][2]
              fors = []