#module m_tree children, content #modinit str _content #define global new_tree( %1, %2 = "" ) newmod %1, m_tree, %2 content = _content dimtype children, 5, 1 return #defcfunc get_tree_content modvar m_tree@ return content #modfunc get_tree_child str _content, var result f = -1 foreach children if get_tree_content( children.cnt ) != _content : continue f = cnt break loop if f >= 0 : result = children.f : return new_tree children, _content result = children( length(children) - 1 ) return #modfunc _show_tree str indent #define global show_tree( %1, %2 = "" ) _show_tree %1, %2 if indent == "" { mes content } else { mes indent + "┗" + content } foreach children show_tree children.cnt, indent + " " loop return #global paths = {" abc\\def abc\\def\\gh abc\\def\\ij abc\\jk\\lm de"} new_tree tree, "ROOT" paths_index = 0 repeat getstr path, paths, paths_index if strsize == 0 : break paths_index += strsize t = tree path_index = 0 repeat getstr v, path, path_index, '\\' if strsize == 0 : break path_index += strsize get_tree_child t, v, t loop loop show_tree tree