[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):