代码之家  ›  专栏  ›  技术社区  ›  viraptor

转换Jython的源代码/ast

  •  1
  • viraptor  · 技术社区  · 15 年前

    我在Jython有个问题要解决。我得到的函数如下:

    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
    

    其余的是自动生成的?

    我知道unasse和ast-有没有更好的方法来解决这个问题?(是的,我知道-也许像Monad)我在看 rope 图书馆也不能决定…在这里选择哪条路最好?我描述的转换是我唯一需要的,我不介意创建一个临时文件,它将包含在真正的代码中。

    1 回复  |  直到 10 年前
        1
  •  2
  •   Ned Batchelder    15 年前

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