code: public String readUntil(char sentinel)
  	{
  		int i = str.indexOf(sentinel, cursor);
  		if(i>=0) {
  			int from = cursor;
  			cursor = i+1;
  			return str.substring(from, i);
  		}
  		throw new ParseException("terminator not found");
  	}
docs: Read everything until one the sentinel, which must exist in the string.
  Sentinel char is read but not returned in the result.