code: def parse_input_file(text, variables=None):
      
      text = find_includes(text)
      lines = text.splitlines()
      tasks, linenumbers = find_tasks(lines)
      preamble = [line for line in lines[:linenumbers[0]]]
      logging.debug("Preamble:\n{}".format("\n".join(preamble)))
      if variables is not None:
          preamble += "\n" + "\n".join(variables)
      environment = create_environment(preamble)
      code_sections = []
      for n in range(len(linenumbers) - 1):
          code_sections.append((linenumbers[n], linenumbers[n+1]))
      for n, task in zip(code_sections, tasks):
          task["code"] = lines[n[0]: n[1]]
          task["environment"] = environment
      clean_tasks = []
      for task in tasks:
          clean_tasks.append(Task(**task))
      return clean_tasks
docs: Parser for a file with syntax somewhat similar to Drake.