code: def debug_reduce(self, rule, tokens, parent, i):
          
          prefix = '           '
          if parent and tokens:
              p_token = tokens[parent]
              if hasattr(p_token, 'line'):
                  prefix = 'L.%3d.%03d: ' % (p_token.line, p_token.column)
                  pass
              pass
          print("%s%s ::= %s" % (prefix, rule[0], ' '.join(rule[1])))
docs: Customized format and print for our kind of tokens
          which gets called in debugging grammar reduce rules