Я новичок в tcl и пытаюсь захватить только заданную пользователем глубину иерархии следующего:
top.run.end
top.run.something.end
top.simple.end1
top.simple.end2
top.simple.something.end1
top.simple.something.end2
top.simple.something.else.end
top.simple.something.else.other.name.end
Я хотел бы захватить только последний элемент в иерархии, которая не продолжается сбольше элементов, ограниченных "."Т.е. я хотел бы добавить все экземпляры в список (конечное имя элемента может быть любым).
Если пользователь хочет выбрать 2-й уровень иерархии, сравнение должно разрешить только эти элементы сверху:
top.run.end
top.simple.end1
top.simple.end2
Если пользователь указывает 3-й уровень иерархии, я хотел бы получить следующие элементы:
top.simple.something.end1
top.simple.something.end2
4-й уровень иерархии:
top.simple.something.else.end
И так далее, и так далеедалее ... У меня есть весь написанный код, кроме сравнения строк, но все, что я пробовал, похоже, не выполняет то, что я хочу.
set num_hierarchy 3; # how many levels deap to search for "end"
set num_facs [ gtkwave::getNumFacs ]; # returns number of elements in file
for {set group_to_add 1} {$group_to_add <= $num_hierarchy} {incr group_to_add} {
set wave [list]
for {set i 0} {$i < $num_facs } {incr i} {
set fac_name [ gtkwave::getFacName $i ]; #returns string in form noted above
set indx [string <how to compare strings??> $fac_name]
if {$indx == <match>} {
lappend wave "$fac_name"
}
}
}