From: Baptiste L. <bl...@us...> - 2004-08-08 08:58:06
|
Update of /cvsroot/cpptool/CppParser/src/pyrfta In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12264/src/pyrfta Modified Files: ast.py Log Message: * added wrapping for most member declarations Index: ast.py =================================================================== RCS file: /cvsroot/cpptool/CppParser/src/pyrfta/ast.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ast.py 7 Aug 2004 22:56:20 -0000 1.1 --- ast.py 8 Aug 2004 08:57:57 -0000 1.2 *************** *** 106,110 **** self.type = type ! class Type(...): def __init__( self, node ): self.node = node --- 106,110 ---- self.type = type ! class Type(ASTElement): def __init__( self, node ): self.node = node *************** *** 134,137 **** --- 134,170 ---- self.node = enum_definition_node + class ClassType(Type): + def __init__( self, class_node ): + self.base_classes = [] + pass + + def addBaseClass( self, base_class_specifier ): + self.base_classes.append( base_class_specifier ) + + class ClassBaseSpecifier(ASTElement): + def __init__( self, base_specifier_node ): + self.node = base_specifier_node + # base_class_access + # base_class_name + + class MemberAccessSpecification(ASTElement): + def __init__( self, access_node ): # private, public, ... + self.node = access_node + + class MemberDeclaration(Declaration): + pass # rule member_declaration, node 'member_declaration' + + class ConstructorMemberDeclaration(Declaration): + pass + + class MemberErrorDeclaration(Declaration): + pass + + class ForwardClassType(Type): + pass + + class ForwardEnumType(Type): + pass + class LinkageSpecificationBase: def __init__( self ): *************** *** 165,173 **** pass - class AggregateDeclaration(Declaration): - pass - - class Type: - pass --- 198,201 ---- *************** *** 191,196 **** 'class_specifier' : self.buildClassType, 'forward_class_specifier' : self.buildForwardClassType, ! 'forward_enum_specifier' : self.buildForwardEnumType, ! 'forward_typename_specifier' : self.buildForwardTypenameType } --- 219,233 ---- 'class_specifier' : self.buildClassType, 'forward_class_specifier' : self.buildForwardClassType, ! 'forward_enum_specifier' : self.buildForwardEnumType ! # 'forward_typename_specifier' : self.buildForwardTypenameType ! } ! self.member_declaration_builders = { ! 'access_specification' : self.buildMemberAccessSpecification, ! 'member_function_definition' : self.buildMemberFunctionDefinition, ! 'member_declaration' : self.buildMemberDeclaration, ! 'typeless_function_declaration' : self.buildTypelessFunctionDeclaration, ! 'using_declaration' : self.buildUsingDeclaration, ! # 'template_declaration' : self.buildMemberTemplateDeclaration ! 'member_error' : self.buildMemberErrorDeclaration } *************** *** 279,283 **** def buildEnumType( self, type_node ): ! ast = EnumType( self, type_node ) for definition in nodetools.getFirstChildNamed( type_node, 'enumerator_definitions' ).enumChildren(): ast.addDefinition( EnumDefinition( definition ) ) --- 316,320 ---- def buildEnumType( self, type_node ): ! ast = EnumType( type_node ) for definition in nodetools.getFirstChildNamed( type_node, 'enumerator_definitions' ).enumChildren(): ast.addDefinition( EnumDefinition( definition ) ) *************** *** 285,298 **** def buildClassType( self, type_node ): ! pass def buildForwardClassType( self, type_node ): ! pass def buildForwardEnumType( self, type_node ): ! pass ! def buildForwardTypenameType( self, type_node ): ! pass def buildFunctionDefinition( self, declaration ): --- 322,368 ---- def buildClassType( self, type_node ): ! ast = ClassType( type_node ) ! self.buildClassBases( ast, type_node ) ! self.buildClassMembers( ast, type_node ) ! return ast ! ! def buildClassBases( self, ast, type_node ): ! class_bases_node = nodetools.getFirstChildNamed( type_node, 'class_bases', False ) ! if class_bases_node: ! for child in nodetools.getChildrenNamed( class_bases_node, 'base_specifier' ): ! ast.addBaseClasse( ClassBaseSpecifier( child ) ) ! ! def buildClassMembers( self, ast, type_node ): ! members_node = nodetools.getFirstChildNamed( type_node, 'member_specification', False ) ! if members_node: ! for child in members_node.enumChildren(): ! declaration = self.member_declaration_builders[ child.name ]( child ) ! ast.addMemberDeclaration( declaration ) ! ! def buildMemberAccessSpecification( self, declaration ): ! return MemberAccessSpecification( declaration ) ! ! def buildMemberFunctionDefinition( self, declaration ): ! return self.buildFunctionDefinition( self, declaration ) ! ! def buildMemberDeclaration( self, declaration ): ! ast = MemberDeclaration( self, declaration ) ! return ast ! ! def buildTypelessFunctionDeclaration( self, declaration ): ! ast = ConstructorMemberDeclaration( self, declaration ) ! return ast ! ! def buildMemberErrorDeclaration( self, declaration ): ! return MemberErrorDeclaration( declaration ): def buildForwardClassType( self, type_node ): ! return ForwardClassDeclaration( type_node ) def buildForwardEnumType( self, type_node ): ! return ForwardEnumDeclaration( type_node ) ! # def buildForwardTypenameType( self, type_node ): ! # return Forward def buildFunctionDefinition( self, declaration ): |