parameters: (comment)
docstring: Extracts a list of result types from the given comment.
  
       We allow annotations in the comment of the matcher to specify what
       nodes a matcher can match on. Those comments have the form:
         Usable as: Any Matcher | (Matcher<T1>[, Matcher<t2>[, ...]])
  
       Returns ['*'] in case of 'Any Matcher', or ['T1', 'T2', ...].
       Returns the empty list if no 'Usable as' specification could be
       parsed.
docstring_summary: Extracts a list of result types from the given comment.
docstring_tokens: Extracts a list of result types from the given comment .
function: def extract_result_types(comment):
    """Extracts a list of result types from the given comment.
  
       We allow annotations in the comment of the matcher to specify what
       nodes a matcher can match on. Those comments have the form:
         Usable as: Any Matcher | (Matcher<T1>[, Matcher<t2>[, ...]])
  
       Returns ['*'] in case of 'Any Matcher', or ['T1', 'T2', ...].
       Returns the empty list if no 'Usable as' specification could be
       parsed.
    """
    result_types = []
    m = re.search(r'Usable as: Any Matcher[\s\n]*$', comment, re.S)
    if m:
      return ['*']
    while True:
      m = re.match(r'^(.*)Matcher<([^>]+)>\s*,?[\s\n]*$', comment, re.S)
      if not m:
        if re.search(r'Usable as:\s*$', comment):
          return result_types
        else:
          return None
      result_types += [m.group(2)]
      comment = m.group(1)
function_tokens: def extract_result_types ( comment ) : result_types = [ ] m = re . search ( r'Usable as: Any Matcher[\s\n]*$' , comment , re . S ) if m : return [ '*' ] while True : m = re . match ( r'^(.*)Matcher<([^>]+)>\s*,?[\s\n]*$' , comment , re . S ) if not m : if re . search ( r'Usable as:\s*$' , comment ) : return result_types else : return None result_types += [ m . group ( 2 ) ] comment = m . group ( 1 )