def parse(<EOL>files,<EOL>config=None,<EOL>compilation_mode=COMPILATION_MODE.FILE_BY_FILE,<EOL>cache=None):
if not config:<EOL><INDENT>config = xml_generator_configuration_t()<EOL><DEDENT>parser = project_reader_t(config=config, cache=cache)<EOL>declarations = parser.read_files(files, compilation_mode)<EOL>config.xml_generator_from_xml_file = parser.xml_generator_from_xml_file<EOL>return declarations<EOL>
Parse header files.

:param files: The header files that should be parsed
:type files: list of str
:param config: Configuration object or None
:type config: :class:`parser.xml_generator_configuration_t`
:param compilation_mode: Determines whether the files are parsed
                         individually or as one single chunk
:type compilation_mode: :class:`parser.COMPILATION_MODE`
:param cache: Declaration cache (None=no cache)
:type cache: :class:`parser.cache_base_t` or str
:rtype: list of :class:`declarations.declaration_t`