docs: def t_file_or_func(self, s):
          r'(?:[^*-+,\d\'"\t \n:][^\'"\t \n:,]*)|(?:^""".+""")|(?:\'\'\'.+\'\'\')'
          maybe_funcname = True
          if s == 'if':
              self.add_token('IF', s)
              return
          if s[0] in frozenset(('"', "'")):
              # Pick out text inside of triple-quoted string
              if ( (s.startswith("'''") and s.endswith("'''") ) or
                   (s.startswith('"""') and s.endswith('"""') ) ):
                  base = s[3:-3]
              else:
                  # Pick out text inside singly-quote string
                  base = s[1:-1]
              maybe_funcname = False
          else:
              base = s
          pos = self.pos
          if maybe_funcname and re.match('[a-zA-Z_][[a-zA-Z_.0-9\[\]]+\(\)', s):
              self.add_token('FUNCNAME', base)
          else:
              self.add_token('FILENAME', base)
          self.pos = pos + len(s)