code: def _parse_programs(self, string, parent, filepath=None):
          
          #First, get hold of the docstrings  for all the modules so that we can
          #attach them as we parse them.
          moddocs = self.docparser.parse_docs(string)
          #Now look for modules in the file and then match them to their decorators.
          matches = self.RE_PROGRAM.finditer(string)
          result = []
          for rmodule in matches:
              name = rmodule.group("name").lower()
              contents = re.sub("&[ ]*\n", "", rmodule.group("contents"))
              module = self._process_module(name, contents, parent, rmodule, filepath)
              #Check whether the docparser found docstrings for the module.
              if name in moddocs:                
                  module.docstring = self.docparser.to_doc(moddocs[name][0], name)
                  module.docstart, module.docend = module.absolute_charindex(string, moddocs[name][1],
                                                                             moddocs[name][2])
              result.append(module)
          return result
docs: Extracts a PROGRAM from the specified fortran code file.