code: def position(string, index):
  	
  
  	if not string:
  		return None
  
  	if index < 0 or index >= len(string):
  		raise InternalError("Out-of-range index passed to errors.position!")
  
  	lines = string.split("\n")
  
  	# If there only is one single line the
  	# line:index format wouldn't be so intuitive
  	if len(lines) == 1:
  		return str(index)
  
  	before = n = 0
  
  	for n, line in enumerate(lines):
  		future = before + len(line) + 1 # \n
  		# Note that we really want > and not
  		# >= because the length is 1-indexed
  		# while the index is not, i.e. the
  		# value of 'before' already includes the
  		# first character of the next line when
  		# speaking of its 0-indexed index
  		if future > index:
  			break
  		before = future
  
  	# index - before to have only the
  	# index within the relevant line
  	return "{0}:{1}".format(n, index - before)
docs: Returns a helpful position description for an index in a
  	(multi-line) string using the format line:column.
  
  	Arguments:
  		string (str): The string to which the index refers.
  		index (int): The index of the character in question.
  
  	Returns:
  		A string with the format line:column where line refers to the
  		1-indexed row/line in which the character is found within the
  		string and column to the position of the character within
  		(relative to) that  line.