code: def add_unique_rule(self, rule, opname, arg_count, customize):
          
          if rule not in self.new_rules:
              # print("XXX ", rule) # debug
              self.new_rules.add(rule)
              self.addRule(rule, nop_func)
              customize[opname] = arg_count
              pass
          return
docs: Add rule to grammar, but only if it hasn't been added previously
             opname and stack_count are used in the customize() semantic
             the actions to add the semantic action rule. Stack_count is
             used in custom opcodes like MAKE_FUNCTION to indicate how
             many arguments it has. Often it is not used.