【问题标题】:Why doesn't "parsetcl" produce output?为什么“parsetcl”不产生输出?
【发布时间】: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 8package 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 将被报告为变量替换之上的命令替换,但您不会得到任何实际的变量名称......因为它是未知的)。

标签: tcl tclsh


【解决方案1】:

不知道为什么parsetcl 不起作用或如何解决它,我发现使用nagelfarstatementWords 的插件是解决我主要问题的更好方法。

我不会接受这个,我自己的回答,以防有人想为parsetcl 发布修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-03
    • 2021-03-17
    • 2023-01-02
    • 1970-01-01
    • 2021-11-16
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多