code: def PyParseRangeCheck(lower_bound, upper_bound):
    
    # pylint: disable=unused-argument
    def CheckRange(string, location, tokens):
      """Parse the arguments.
  
      Args:
        string (str): original string.
        location (int): location in the string where the match was made
        tokens (list[str]): tokens.
      """
      try:
        check_number = tokens[0]
      except IndexError:
        check_number = -1
  
      if check_number < lower_bound:
        raise pyparsing.ParseException(
            'Value: {0:d} precedes lower bound: {1:d}'.format(
                check_number, lower_bound))
  
      if check_number > upper_bound:
        raise pyparsing.ParseException(
            'Value: {0:d} exceeds upper bound: {1:d}'.format(
                check_number, upper_bound))
  
    # Since callback methods for pyparsing need to accept certain parameters
    # and there is no way to define conditions, like upper and lower bounds
    # we need to return here a method that accepts those pyparsing parameters.
    return CheckRange
docs: Verify that a number is within a defined range.
  
    This is a callback method for pyparsing setParseAction
    that verifies that a read number is within a certain range.
  
    To use this method it needs to be defined as a callback method
    in setParseAction with the upper and lower bound set as parameters.
  
    Args:
      lower_bound (int): lower bound of the range.
      upper_bound (int): upper bound of the range.
  
    Returns:
      Function: callback method that can be used by pyparsing setParseAction.