2009-09-18 82 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