Scan directory tree starting from top, look for files with extension `ext` and
        parse timing data.

        Return: (parser, paths, okfiles)
            where `parser` is the new object, `paths` is the list of files found and `okfiles`
            is the list of files that have been parsed successfully.
            (okfiles == paths) if all files have been parsed.

def walk(cls, top=".", ext=".abo"):
        """
        Scan directory tree starting from top, look for files with extension `ext` and
        parse timing data.

        Return: (parser, paths, okfiles)
            where `parser` is the new object, `paths` is the list of files found and `okfiles`
            is the list of files that have been parsed successfully.
            (okfiles == paths) if all files have been parsed.
        """
        paths = []
        for root, dirs, files in os.walk(top):
            for f in files:
                if f.endswith(ext):
                    paths.append(os.path.join(root, f))

        parser = cls()
        okfiles = parser.parse(paths)
        return parser, paths, okfiles