from . import preprocessor def iter_clean_lines(lines): incomment = False for line in lines: # Deal with comments. if incomment: _, sep, line = line.partition('*/') if sep: incomment = False continue line, _, _ = line.partition('//') line, sep, remainder = line.partition('/*') if sep: _, sep, after = remainder.partition('*/') if not sep: incomment = True continue line += ' ' + after # Ignore blank lines and leading/trailing whitespace. line = line.strip() if not line: continue yield line def iter_lines(filename, *, preprocess=preprocessor.run, ): content = preprocess(filename) return iter(content.splitlines())