parameters: (line, endpos, depth, startchar, endchar)
return_statement: return (-1, depth)
docstring: Find position at the matching startchar.
  
    This is almost the reverse of FindEndOfExpressionInLine, but note
    that the input position and returned position differs by 1.
  
    Args:
      line: a CleansedLines line.
      endpos: start searching at this position.
      depth: nesting level at endpos.
      startchar: expression opening character.
      endchar: expression closing character.
  
    Returns:
      On finding matching startchar: (index at matching startchar, 0)
      Otherwise: (-1, new depth at beginning of this line)
docstring_summary: Find position at the matching startchar.
docstring_tokens: Find position at the matching startchar .
function: def FindStartOfExpressionInLine(line, endpos, depth, startchar, endchar):
    """Find position at the matching startchar.
  
    This is almost the reverse of FindEndOfExpressionInLine, but note
    that the input position and returned position differs by 1.
  
    Args:
      line: a CleansedLines line.
      endpos: start searching at this position.
      depth: nesting level at endpos.
      startchar: expression opening character.
      endchar: expression closing character.
  
    Returns:
      On finding matching startchar: (index at matching startchar, 0)
      Otherwise: (-1, new depth at beginning of this line)
    """
    for i in xrange(endpos, -1, -1):
      if line[i] == endchar:
        depth += 1
      elif line[i] == startchar:
        depth -= 1
        if depth == 0:
          return (i, 0)
    return (-1, depth)
function_tokens: def FindStartOfExpressionInLine ( line , endpos , depth , startchar , endchar ) : for i in xrange ( endpos , - 1 , - 1 ) : if line [ i ] == endchar : depth += 1 elif line [ i ] == startchar : depth -= 1 if depth == 0 : return ( i , 0 ) return ( - 1 , depth )