code: def score(self):
          
          if self._heuristic_score is None:
              matches = self.heuristic()
              self._heuristic_score = float(sum(matches)) / float(len(matches))
          return self._heuristic_score
docs: Calculate and return a heuristic score for this Parser against the provided
          script source and path. This is used to order the ArgumentParsers as "most likely to work"
          against a given script/source file.
  
          Each parser has a calculate_score() function that returns a list of booleans representing
          the matches against conditions. This is converted into a % match and used to sort parse engines.
  
          :return: float