Tag: tcl

使用Ruby来解析Tcl DSL

我希望能够解析一些Tcl代码,其中参数不被字符串包围。 考虑一下这个tcl代码: proc foo {name} { puts “Foo –> $name” } foo bar 对于那些不熟悉Tcl的人来说, foo是方法名称, bar是参数(引号在Tcl中是可选的)。 以前的代码将输出: Foo –> bar 是否有可能使用ruby解析完全相同的输入( bar仍未加引号)? 等效的ruby代码是: def foo(name) puts “Foo –> #{name}” end tcl = <<-TCL.gsub(/^\s+/, "").chop foo bar TCL instance_eval(tcl) 当然,当它到达bar时会失败,因为它预计会被引用。 我尝试过修改method_missing def method_missing(meth, *args) puts meth.to_s + ” –> args.to_s end 但它以相反的顺序解析: to_hash –> [] bar […]