def read_maximal_term(priority)
      return nil if empty?
      logger.debug "read maximal term (#{priority})"
      first = read_minimal_term
      term = add_next_infix_terms(priority, first)
      logger.debug "read maximal term: #{term}"
      term
    end
def read_maximal_term(priority)
      return nil if empty?
      logger.debug "read maximal term (#{priority})"
      first = read_minimal_term
      term = add_next_infix_terms(priority, first)
      logger.debug "read maximal term: #{term}"
      term
    end
Reads next maximal term. The following input doesn't make the term more complete.
 Respects the priority of operators by comparing it to the given value.