【发布时间】:2020-05-11 15:02:14
【问题描述】:
我想阅读myfile.tcl 并遍历它的结构(枚举过程和变量,诸如此类)。
我知道内置的 interp 命令,但它看起来不会让我遍历它解析的结构,只需评估它。
我试过https://wiki.tcl-lang.org/page/parsetcl 但是
a) 使用 can't find package tcl 8.4 失败,我尝试了 package require tcl 8 和 package require tcl 8.5 但这也没有用,所以我只是将其注释掉
b) 之后它仍然不起作用,下面的测试脚本只是挂起而不产生输出
source "lib/parsetcl.tcl"
proc _load {file_name} {
set fp [open $file_name r]
set file_data [read $fp]
close $fp
return $file_data
}
parsetcl::simple_parse_script [info body _load]
我也试过parsetcl::format_tree [parsetcl::simple_parse_script [info body _load]] { } { },同样的问题。
我正在使用 tclsh 执行这些,在 Ubunut 上 apt 认为我安装了包 tcl tcl8.5 tcl8.6。
为什么这不起作用?
【问题讨论】:
-
package require Tcl version-number。注意大写 T。 -
我将
tcl更改为Tcl现在require可以工作,但是sn-p 仍然挂起,没有输出 -
您到底想对 Tcl 脚本的解析表示做什么?我为什么要问,因为根据您想要做什么,
parsetcl(上图)或其他任何内容都无济于事,因为 Tcl 语法不是很具体,例如:您不会获得权威的变量列表(例如,考虑set $varName 1将被报告为变量替换之上的命令替换,但您不会得到任何实际的变量名称......因为它是未知的)。