code: def eval_xof_pattern(node, pattern):
          
          xof_pattern = r"^(-?\d+%?),*(-?\d*%?),*(-?\d*%?) *of: *(.+)"
          regex = re.compile(xof_pattern)
          matches = regex.search(pattern)
          if matches is not None:
              node.operand = 'of:'
              groups = matches.groups()
              # We can have a Aof: rule, or a multiple A,B,Cof: rule.
              mul_of = (groups[1] != '' and groups[2] != '')
              # If multi got (A,B,C)
              if mul_of:
                  node.is_of_mul = True
                  node.of_values = (groups[0], groups[1], groups[2])
              else:  # if not, use A,0,0, we will change 0 after to put MAX
                  node.of_values = (groups[0], '0', '0')
              pattern = matches.groups()[3]
          return pattern
docs: Parse a X of pattern
          * Set is_of_mul attribute
          * Set of_values attribute
  
          :param node: node to edit
          :type node:
          :param pattern: line to match
          :type pattern: str
          :return: end of the line (without X of :)
          :rtype: str