是否有可能获取源代码的字符串/AST,并在运行时对其进行计算(如eval())?我在文档中发现了一些暗示性的特性,但没有明显的证据。
发布于 2014-01-13 07:17:05
它不像调用eval()函数那么容易,但它是可能的。首先需要将范汤姆代码编译成类,然后才能执行它。
外星工厂的一个图书馆塑料就是这样做的.示例:
using afPlastic
class Example {
Void main() {
eval("2 + 2") // --> 4
}
Obj? eval(Str code) {
model := PlasticClassModel("MyClass", true)
model.addMethod(Obj?#, "eval", "", code)
myType := PlasticCompiler().compileModel(model.toFantomCode)
return myType.make->eval()
}
}PlasticCompiler类完成了将扇汤姆代码编译成可用类型的工作。
它使用扇编译器库,并基于在范什中找到的代码--扇the,它是扇范什发行版的一部分。
https://stackoverflow.com/questions/21083321
复制相似问题