docs: def percentage(columns, maximum=100, name=None):
      """
      Creates the grammar for a Numeric (N) field storing a percentage and
      accepting only the specified number of characters.
  
      It is possible to set the maximum allowed value. By default this is 100
      (for 100%), and if modified it is expected to be reduced, not increased.
  
      The three first digits will be for the integer value.
  
      The columns can't be lower than 3.
  
      :param columns: number of columns for this field
      :param maximum: maximum allowed value
      :param name: name for the field
      :return: grammar for the float numeric field
      """
  
      if name is None:
          name = 'Percentage Field'
  
      if columns < 3:
          message = 'The values can not be lower than 3'
          raise pp.ParseException(message)
  
      field = basic.numeric_float(columns, 3)
  
      field.addParseAction(lambda v: _assert_is_percentage(v[0], maximum))
  
      field.setName(name)
  
      return field