运行时反射:从AST获取变量和/或范围

时间:2013-09-19 05:21:09

标签: scala reflection abstract-syntax-tree

考虑以下函数声明(在这种情况下非常简单,但问题当然适用于一般情况):

def f( x : Int ) = { val y = 1; val z = 2; x * y * z }

鉴于通过运行时反射为f获得的树,是否有任何内置的

支持

a)获取变量声明?

b)他们的相关范围?

我可以看到一个人可以通过编写自定义树遍历来获得a),然后b)通过从声明点执行进一步的遍历。

然而,这显然是一项非常重要且容易出错的事业。

特别是,我发现反射API包含一个Scope类,但我无法确定它是否在提供b)中起任何作用。

0 个答案:

没有答案