def read_files(<EOL>self,<EOL>files,<EOL>compilation_mode=COMPILATION_MODE.FILE_BY_FILE):
if compilation_mode == COMPILATION_MODE.ALL_AT_ONCEand len(files) == len(self.get_os_file_names(files)):<EOL><INDENT>return self.__parse_all_at_once(files)<EOL><DEDENT>else:<EOL><INDENT>if compilation_mode == COMPILATION_MODE.ALL_AT_ONCE:<EOL><INDENT>msg = '<STR_LIT>'.join([<EOL>"<STR_LIT>",<EOL>"<STR_LIT>",<EOL>"<STR_LIT>",<EOL>"<STR_LIT>"])<EOL>self.logger.warning(msg)<EOL><DEDENT>return self.__parse_file_by_file(files)<EOL><DEDENT>
parses a set of files

:param files: list of strings and\\or :class:`file_configuration_t`
              instances.
:type files: list

:param compilation_mode: determines whether the files are parsed
                         individually or as one single chunk
:type compilation_mode: :class:`COMPILATION_MODE`
:rtype: [:class:`declaration_t`]