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