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 ----
|