parameters: (clean_lines, linenum, pos)
return_statement: return (line, 0, -1)
docstring: If input points to ) or } or ] or >, finds the position that opens it.
  
    If lines[linenum][pos] points to a ')' or '}' or ']' or '>', finds the
    linenum/pos that correspond to the opening of the expression.
  
    Args:
      clean_lines: A CleansedLines instance containing the file.
      linenum: The number of the line to check.
      pos: A position on the line.
  
    Returns:
      A tuple (line, linenum, pos) pointer *at* the opening brace, or
      (line, 0, -1) if we never find the matching opening brace.  Note
      we ignore strings and comments when matching; and the line we
      return is the 'cleansed' line at linenum.
docstring_summary: If input points to ) or } or ] or >, finds the position that opens it.
docstring_tokens: If input points to ) or } or ] or > finds the position that opens it .
function: def ReverseCloseExpression(clean_lines, linenum, pos):
    """If input points to ) or } or ] or >, finds the position that opens it.
  
    If lines[linenum][pos] points to a ')' or '}' or ']' or '>', finds the
    linenum/pos that correspond to the opening of the expression.
  
    Args:
      clean_lines: A CleansedLines instance containing the file.
      linenum: The number of the line to check.
      pos: A position on the line.
  
    Returns:
      A tuple (line, linenum, pos) pointer *at* the opening brace, or
      (line, 0, -1) if we never find the matching opening brace.  Note
      we ignore strings and comments when matching; and the line we
      return is the 'cleansed' line at linenum.
    """
    line = clean_lines.elided[linenum]
    endchar = line[pos]
    if endchar not in ')}]>':
      return (line, 0, -1)
    if endchar == ')': startchar = '('
    if endchar == ']': startchar = '['
    if endchar == '}': startchar = '{'
    if endchar == '>': startchar = '<'
  
    # Check last line
    (start_pos, num_open) = FindStartOfExpressionInLine(
        line, pos, 0, startchar, endchar)
    if start_pos > -1:
      return (line, linenum, start_pos)
  
    # Continue scanning backward
    while linenum > 0:
      linenum -= 1
      line = clean_lines.elided[linenum]
      (start_pos, num_open) = FindStartOfExpressionInLine(
          line, len(line) - 1, num_open, startchar, endchar)
      if start_pos > -1:
        return (line, linenum, start_pos)
  
    # Did not find startchar before beginning of file, give up
    return (line, 0, -1)
function_tokens: def ReverseCloseExpression ( clean_lines , linenum , pos ) : line = clean_lines . elided [ linenum ] endchar = line [ pos ] if endchar not in ')}]>' : return ( line , 0 , - 1 ) if endchar == ')' : startchar = '(' if endchar == ']' : startchar = '[' if endchar == '}' : startchar = '{' if endchar == '>' : startchar = '<' # Check last line ( start_pos , num_open ) = FindStartOfExpressionInLine ( line , pos , 0 , startchar , endchar ) if start_pos > - 1 : return ( line , linenum , start_pos ) # Continue scanning backward while linenum > 0 : linenum -= 1 line = clean_lines . elided [ linenum ] ( start_pos , num_open ) = FindStartOfExpressionInLine ( line , len ( line ) - 1 , num_open , startchar , endchar ) if start_pos > - 1 : return ( line , linenum , start_pos ) # Did not find startchar before beginning of file, give up return ( line , 0 , - 1 )