我是 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
我只想捕获层次结构中的最终元素,该层次结构不会继续以“。”分隔的更多元素。即我想将所有实例附加到列表中(最终元素名称可以是任何东西)。
如果用户想要选择第二层级,则比较应该只允许来自上面的这些元素:
top.run.end
top.simple.end1
top.simple.end2
如果用户指定第三层级,那么我想获取这些元素:
top.simple.something.end1
top.simple.something.end2
第四层级:
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"
}
}
}