From: Baptiste L. <bl...@us...> - 2004-08-07 15:52:33
|
Update of /cvsroot/cpptool/CppParser/src/pyrfta In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9448/src/pyrfta Added Files: .cvsignore pycppparser.py pycppparsertest.py Log Message: * made a library out of the c++ parser (cppparser) * exposed the c++ parser to python (pycppparser) * migrating refactoring framework to python (pyrfta) --- NEW FILE: .cvsignore --- *.dll cpp_grammar.txt *.pyc *.pyd --- NEW FILE: pycppparser.py --- from pycppparser_ import * --- NEW FILE: pycppparsertest.py --- import unittest import pycppparser as cprs class TokenTest(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def testTokenType( self ): cprs.TK_SPACES cprs.TK_IDENTIFIER cprs.TK_SYMBOL assert( cprs.TK_SPACES.isSilent ) assert( not cprs.TK_IDENTIFIER.isSilent ) def testTokenLocation( self ): loc = cprs.TokenLocation( 10, 17, 3 ) assert loc.isValid() self.assertEqual( 10, loc.startPos ) self.assertEqual( 17, loc.endPos ) self.assertEqual( 7, loc.length ) self.assertEqual( 3, loc.bufferId ) def testToken( self ): tk = cprs.Token( 'myVar', cprs.TK_IDENTIFIER ) self.assertEqual( 'myVar', tk.text ) assert not tk.location.isValid() self.assertEqual( cprs.TK_IDENTIFIER, tk.type ) self.assertEqual( cprs.TK_IDENTIFIER, tk.category ) assert not tk.isSilent self.assertEqual( cprs.TK_IDENTIFIER.name, tk.typeName ) tkcopy = cprs.Token( tk ) self.assertEqual( tk, tkcopy ) tkother = cprs.Token('otherVar', cprs.TK_IDENTIFIER ) assert tkcopy != tkother class CppParserFacadeTest(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def testParseCpp( self ): grammar_path = 'cpp_grammar.txt' parser = cprs.makeParser( grammar_path ) translation_unit = parser.parse( 'void main() { }' ) #print translation_unit.treeStr() self.assertEqual( 'translation_unit', translation_unit.name ) self.visitChildren( translation_unit ) def visitChildren( self, node ): for child in node.enumChildren(): print 'visiting:', child self.visitChildren( child ) if __name__ == '__main__': unittest.main() |