class Preprocessor(object):
    def __init__(self, source_filename, target_filename, include_filenames):
        self.reader = Reader(source_filename)
        for filename in include_filenames:
            self.reader.include(filename)
        self.writer = Writer(target_filename)
        self.defines = {}
        self.lines = self.reader.get_lines() # это генератор
        
    def define(self, line):
        pass
    
    def include(self, line):
        pass
    
    def process(self, line):
        return True
        
    def run(self):
        for line in self.lines:
            if self.process(line):
                self.writer.write_line(line)
    
    def close(self):
        self.reader.close()
        self.writer.close()
 def __init__(self, source_filename, target_filename, include_filenames):
     self.reader = Reader(source_filename)
     for filename in include_filenames:
         self.reader.include(filename)
     self.writer = Writer(target_filename)
     self.defines = {}
     self.lines = self.reader.get_lines() # это генератор