docstr: Split a key into path elements:
  - a.b.c => a, b, c
  - a."b.c" => a, QuotedKey("b.c") if . is any of the special characters: $}[]:=+#`^?!@*&.
  - "a" => a
  - a.b."c" => a, b, c (special case)
  :param string: either string key (parse '.' as sub-key) or int / float as regular keys
  :return:
docstr_tok: ["Split","a","key","into","path","elements",":","-","a.b.c","=",">","a",",","b",",","c","-","a",".","``","b.c","''","=",">","a",",","QuotedKey","(","``","b.c","''",")","if",".","is","any","of","the","special","characters",":","$","}","[","]",":","=+","#","`","^","?","!","@","*","&",".","-","``","a","''","=",">","a","-","a.b",".","``","c","''","=",">","a",",","b",",","c","(","special","case",")",":","param","string",":","either","string","key","(","parse","'",".","'","as","sub-key",")","or","int","\/","float","as","regular","keys",":","return",":"]
code: def parse_key(string):
      """
      Split a key into path elements:
      - a.b.c => a, b, c
      - a."b.c" => a, QuotedKey("b.c") if . is any of the special characters: $}[]:=+#`^?!@*&.
      - "a" => a
      - a.b."c" => a, b, c (special case)
      :param string: either string key (parse '.' as sub-key) or int / float as regular keys
      :return:
      """
      if isinstance(string, (int, float)):
          return [string]
  
      special_characters = "$}[]:=+#`^?!@*&."
      tokens = re.findall(
          r'"[^"]+"|[^{special_characters}]+'.format(
              special_characters=re.escape(special_characters)
          ),
          string,
      )
  
      def contains_special_character(token):
          return any((c in special_characters) for c in token)
  
      return [
          token
          if contains_special_character(token)
          else token.strip('"')
          for token in tokens
      ]
  
imports: from collections import OrderedDict
  from pyparsing import lineno
  from pyparsing import col
  import re
  import copy
  from .exceptions import ConfigException, ConfigWrongTypeException, ConfigMissingException
label_desc: Use image node_id 6 for calling the ConfigTree obj's underlying member method code with example usage: obj.parse_key(string) and returns: unknown, list, any