使用Ruby解析Tcl DSL
|
我希望能够解析一些参数不被字符串包围的Tcl代码。
考虑以下tcl代码:
proc foo {name} {
puts \"Foo --> $name\"
}
foo bar
对于不熟悉Tcl的用户,foo
是方法名称,and2ѭ是自变量(Tcl中的引号是可选的)。
先前的代码将输出:
Foo --> bar
是否可以使用ruby解析完全相同的输入(bar
保持未引用)?
等效的红宝石代码为:
def foo(name)
puts \"Foo --> #{name}\"
end
tcl = <<-TCL.gsub(/^\\s+/, \"\").chop
foo bar
TCL
instance_eval(tcl)
当然,当它达到bar
时会失败,因为它会被引用。
我尝试过with7ѭ
def method_missing(meth, *args)
puts meth.to_s + \" --> args.to_s
end
但它以相反的顺序解析:
to_hash --> []
bar --> []
foo --> [nil]
有没有人有针对此类问题的明确解决方案。我想避免标记字符串,因为与词法分析相比,通过调用方法读取数据所需的工作最少。但是,如果我试图做一些不可能的事情,我想知道。谢谢。
没有找到相关结果
已邀请:
2 个回复
芯伶句餐绕
方法返回
而不是字符串:
我真的不知道为什么ѭ13出现在此ѭ7中,但是它起作用:
耐钨徒