コード例 #1
0
        def test_parsesPythonLibraryCorrectly(self):
            class TreeVisitor:
                pass

            import time

            tree = createTree()

            t1 = time.time()
            for i in xrange(1000):
                visitor.walk(tree, TreeVisitor())
            print "tree without yield", time.time() - t1

            t1 = time.time()
            for i in xrange(1000):
                for node in visitor.walkAndGenerate(tree, TreeVisitor()):
                    pass
            print "tree with yield", time.time() - t1
コード例 #2
0
        def test_parsesPythonLibraryCorrectly(self):

            class TreeVisitor:
                pass
            
            import time

            tree = createTree()

            t1 = time.time()
            for i in xrange(1000):
                visitor.walk(tree,TreeVisitor())
            print "tree without yield",time.time()-t1

            t1 = time.time()
            for i in xrange(1000):
                for node in visitor.walkAndGenerate(tree,TreeVisitor()):
                    pass
            print "tree with yield",time.time()-t1
コード例 #3
0
    def test_callsVisitorFunctionsWithYield(self):
        tree = createTree()

        class TreeVisitor:
            def __init__(self):
                self.txt = []

            def visitAClass(self, node):
                self.txt.append("visitAClass")
                self.txt.append(node.txt)
                yield node
                for i in self.visitChildren(node):
                    yield i

            def visitCClass(self, node):
                self.txt.append("visitCClass")
                self.txt.append(node.txt)
                if 0: yield 1

            def getTxt(self):
                return ",".join(self.txt)

        for node in visitor.walkAndGenerate(tree, TreeVisitor()):
            assert node.txt == "aclass"
コード例 #4
0
    def test_callsVisitorFunctionsWithYield(self):
        tree = createTree()
        
        class TreeVisitor:
            def __init__(self):
                self.txt = []

            def visitAClass(self,node):
                self.txt.append("visitAClass")
                self.txt.append(node.txt)
                yield node
                for i in self.visitChildren(node):
                    yield i
                
            def visitCClass(self,node):
                self.txt.append("visitCClass")
                self.txt.append(node.txt)
                if 0: yield 1

            def getTxt(self):
                return ",".join(self.txt)

        for node in visitor.walkAndGenerate(tree,TreeVisitor()):
            assert node.txt == "aclass"