[Python-checkins] python/nondist/sandbox/ast asdl.py,1.1,1.2

jhylton@sourceforge.net jhylton@sourceforge.net
Mon, 08 Apr 2002 22:32:44 -0700


Update of /cvsroot/python/python/nondist/sandbox/ast
In directory usw-pr-cvs1:/tmp/cvs-serv17950

Modified Files:
	asdl.py 
Log Message:
Use AST base class as marker (simplifies visitor).
Add explicit Product class.


Index: asdl.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/ast/asdl.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** asdl.py	7 Apr 2002 00:04:53 -0000	1.1
--- asdl.py	9 Apr 2002 05:32:41 -0000	1.2
***************
*** 139,143 ****
      def p_product(self, (_0, fields, _1)):
          " product ::= ( fields ) "
!         return fields
  
      def p_sum_0(self, (constructor,)):
--- 139,143 ----
      def p_product(self, (_0, fields, _1)):
          " product ::= ( fields ) "
!         return Product(fields)
  
      def p_sum_0(self, (constructor,)):
***************
*** 197,201 ****
  # piecemeal as they seem helpful
  
! class Module:
      def __init__(self, name, dfns):
          self.name = name
--- 197,204 ----
  # piecemeal as they seem helpful
  
! class AST:
!     pass # a marker class
! 
! class Module(AST):
      def __init__(self, name, dfns):
          self.name = name
***************
*** 242,246 ****
      return d.keys()
  
! class Type:
      def __init__(self, name, value):
          self.name = name
--- 245,249 ----
      return d.keys()
  
! class Type(AST):
      def __init__(self, name, value):
          self.name = name
***************
*** 250,254 ****
          return "Type(%s, %s)" % (self.name, self.value)
  
! class Constructor:
      def __init__(self, name, fields=None):
          self.name = name
--- 253,257 ----
          return "Type(%s, %s)" % (self.name, self.value)
  
! class Constructor(AST):
      def __init__(self, name, fields=None):
          self.name = name
***************
*** 258,262 ****
          return "Constructor(%s, %s)" % (self.name, self.fields)
  
! class Field:
      def __init__(self, type, name=None, seq=0, opt=0):
          self.type = type
--- 261,265 ----
          return "Constructor(%s, %s)" % (self.name, self.fields)
  
! class Field(AST):
      def __init__(self, type, name=None, seq=0, opt=0):
          self.type = type
***************
*** 277,281 ****
              return "Field(%s, %s,%s)" % (self.type, self.name, extra)
  
! class Sum:
      def __init__(self, types, attributes=None):
          self.types = types
--- 280,284 ----
              return "Field(%s, %s,%s)" % (self.type, self.name, extra)
  
! class Sum(AST):
      def __init__(self, types, attributes=None):
          self.types = types
***************
*** 287,290 ****
--- 290,300 ----
          else:
              return "Sum(%s, %s)" % (self.types, self.attributes)
+ 
+ class Product(AST):
+     def __init__(self, fields):
+         self.fields = fields
+ 
+     def __repr__(self):
+         return "Product(%s)" % self.fields
  
  def parse(file):