2009-09-18 73 views
1

我有一个问题需要在Jython中解决。我已经得到了功能如下:转换Jython的源代码/ ast

ok = whatever1(x, ...) 
self.assertTrue("whatever1 failed: "+x...(), ok) 

ok = whatever2(x, ...) 
self.assertTrue("whatever2 failed: "+x...(), ok) 

[ many many lines ] ... 

有许多测试,这个样子,他们主要包含OK = ...测试,但也有过做一些其他的事情。我知道哪些函数是可测试的,因为它们只来自一个名称空间(或者我可以保留“ok =”部分)。问题是 - 如何自动转换源代码,以便我只写:

ok = whatever1(x, ...) # this is transformed 
ok = whatever2(x, ...) # this too 
something_else(...) # this one isn't 

其余的是自动生成的?

我知道unparse和ast--有没有更好的方法来解决这个问题? (是的,我知道 - 也许就像monad)我正在查看rope图书馆,并且无法决定......在这里选择哪种方式是最好的选择?我描述的转换是我需要的转换,我不介意创建一个临时文件,它将包含在真实代码中。

回答

2

您确定需要AST吗?如果唯一感兴趣的线是以“ok =”开头的线,那么对源文件进行简单的字符串处理就足够了?

+0

确实 - 这是一个好主意......虽然一些更有趣的语法可能会发挥作用,所以我会等待更多答案。 – viraptor 2009-09-18 01:32:20