【问题标题】:How to convert script into a hard coded version of it in Tcl language?如何将脚本转换为 Tcl 语言的硬编码版本?
【发布时间】:2021-12-16 02:26:25
【问题描述】:

我正在寻找一种将脚本转换为其完全硬编码版本的方法。我什至不知道这种功能在软件行业是如何命名的。所以我什至不知道如何谷歌它。这里有一些我想要的例子。我不想对输出使用任何条件或迭代函数。

示例 1) foreach 案例

foreach x [list 1 2 3] { 
    puts "x=$x"
}

我想将此脚本转换为:

puts "x=1" ; puts "x=2" ; puts "x=3"

示例 2)

set A 1
if { $A == "1" } {
    puts "A is 1"
} else {
    puts "A is not 1"
}

我希望这是:

set A 1
puts "A is 1"

示例 3) 如果我遇到注释行或未知命令或过程,我只想将其传递给输出。

set argument 1000
UnknownProcedure $argement

现在应该是:

set argument 100
UnknownProcedure 100

提前致谢。

【问题讨论】:

  • 有些东西不应该甚至不能像那样硬编码,例如打开文件的句柄。从字面上看,根本没有承诺两次运行将使用相同的频道名称。 Tcl 实现可以对它们做任何它想做的事情(而且它们在 Windows 上是不可重复的)。
  • 这是记录/回放程序执行的字段(用于不同目的:调试、测试等)。

标签: tcl code-generation interpretation hardcoded


【解决方案1】:

您可以尝试使用trace add execution ... 命令。如果执行,这用于在命令本身之前执行一段代码。如果您可以将命令的参数传递给您的跟踪函数并使用info frame 来获取正在执行的过程/命令名称,那么您可以使用跟踪函数写出命令的硬编码版本。

看这里:

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多