From: Baptiste L. <bl...@us...> - 2004-08-08 16:13:01
|
Update of /cvsroot/cpptool/CppParser/src/pyrfta In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9161/src/pyrfta Modified Files: ast.py dumpast.py Log Message: * improved support for label statements Index: ast.py =================================================================== RCS file: /cvsroot/cpptool/CppParser/src/pyrfta/ast.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ast.py 8 Aug 2004 15:55:03 -0000 1.5 --- ast.py 8 Aug 2004 16:12:52 -0000 1.6 *************** *** 259,278 **** class ErrorStatement(Statement): pass class LabelStatement(Statement): - pass - - class CaseStatement(Statement): def __init__( self, node ): Statement.__init__( self, node ) - self.value = None self.statement = None - def setValue( self, value ): - self.value = value - def setStatement( self, statement ): self.statement = statement ! class DefaultStatement(Statement): pass --- 259,280 ---- class ErrorStatement(Statement): pass + class LabelStatement(Statement): def __init__( self, node ): Statement.__init__( self, node ) self.statement = None def setStatement( self, statement ): self.statement = statement ! class CaseStatement(LabelStatement): ! def __init__( self, node ): ! LabelStatement.__init__( self, node ) ! self.value = None ! ! def setValue( self, value ): ! self.value = value ! ! class DefaultStatement(LabelStatement): pass *************** *** 621,625 **** def buildLabelStatement( self, statement ): ! return LabelStatement( statement ) def buildCaseStatement( self, statement ): --- 623,627 ---- def buildLabelStatement( self, statement ): ! return self.buildTargetStatement( LabelStatement( statement ), statement ) def buildCaseStatement( self, statement ): *************** *** 627,636 **** value_node = nodetools.getFirstChildNamed( statement, 'constant_expression' ) #ast.setValue( ast.buildConstantExpression( value_node ) ) ! target_statement_node = nodetools.getFirstChildNamed( statement, 'target_statement' ) ! ast.setStatement( self.buildStatement( nodetools.getFirstChild( target_statement_node ) ) ) return ast def buildDefaultStatement( self, statement ): ! return DefaultStatement( statement ) def buildIfStatement( self, statement ): --- 629,643 ---- value_node = nodetools.getFirstChildNamed( statement, 'constant_expression' ) #ast.setValue( ast.buildConstantExpression( value_node ) ) ! self.buildTargetStatement( ast, statement ) return ast def buildDefaultStatement( self, statement ): ! return self.buildTargetStatement( DefaultStatement( statement ), statement ) ! ! def buildTargetStatement( self, ast, label_statement_node ): ! target_statement_node = nodetools.getFirstChildNamed( label_statement_node, 'target_statement' ) ! ast.setStatement( self.buildStatement( nodetools.getFirstChild( target_statement_node ) ) ) ! return ast ! def buildIfStatement( self, statement ): Index: dumpast.py =================================================================== RCS file: /cvsroot/cpptool/CppParser/src/pyrfta/dumpast.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** dumpast.py 8 Aug 2004 15:55:03 -0000 1.4 --- dumpast.py 8 Aug 2004 16:12:52 -0000 1.5 *************** *** 166,174 **** return info ! def visitBreakStatement( self, ast ): ! return ASTInfo( ast ) def visitDefaultStatement( self, ast ): ! return ASTInfo( ast ) --- 166,184 ---- return info ! def visitLabelStatement( self, ast ): ! info = ASTInfo( ast ) ! info.attr( 'statement', self.visitASTNode( ast.statement ) ) ! return info def visitDefaultStatement( self, ast ): ! return self.visitLabelStatement( ast ) ! ! def visitBreakStatement( self, ast ): ! info = ASTInfo( ast ) ! return info ! ! def visitContinueStatement( self, ast ): ! info = ASTInfo( ast ) ! return info *************** *** 206,210 **** print 'Parsing', sys.argv[1] translation_unit_node = parser.parse( source ) - print 'Building ast..' ast = ast.ASTBuilder().buildTranslationUnit( translation_unit_node ) --- 216,219 ---- |