<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def parse_block(self, contents, parent, module, depth):
 """Extracts all executable definitions from the specified string and adds them to the specified parent."""

        for anexec in self.RE_EXEC.finditer(contents):
            x = self._process_execs(anexec, parent, module)
            parent.executables[x.name.lower()] = x
            if  isinstance(parent, Module) and "public" in x.modifiers:
                parent.publics[x.name.lower()] = 1
            
            #To handle the embedded executables, run this method recursively
            self.parse_block(x.contents, x, module, depth + 1)

        #Now that we have the executables, we can use them to compile a string
        #that includes only documentation *external* to the executable definitions
        #Because we enforce adding the name to 'end subroutine' statements etc.
        #all the embedded executables haven't been parsed yet.
        if len(parent.executables) > 0:
            remove = []
            for x in parent.executables:
                remove.append((parent.executables[x].start, parent.executables[x].end))

            remove.sort(key=lambda tup: tup[0])
            retain = []
            cur_end = 0
            for rem in remove:
                if "\n" in contents[rem[0]+1:rem[1]]:
                    signature = contents[rem[0]+1:rem[1]].index("\n") + 2
                    keep = contents[cur_end:rem[0] + signature]
                    cur_end = rem[1]
                    retain.append(keep)

            #Now we have a string of documentation segments and the signatures they
            #decorate that only applies to the non-embedded subroutines
            docsearch = "".join(retain)
            docblocks = self.docparser.parse_docs(docsearch, parent)

            #Process the decorating documentation for the executables including the
            #parameter definitions.
            for x in parent.executables:
                self._process_docs(parent.executables[x], docblocks, 
                                   parent, module, docsearch)