用源代码位置注释ast树
asttokens的Python项目详细描述
asttokens模块用标记的位置注释python抽象语法树(ast) 以及生成它们的源代码中的文本。
它使得使用逻辑ast节点的工具能够找到 生成这些节点,例如用于自动重构或突出显示。
安装
astTokens在pypi上可用:https://pypi.python.org/pypi/asttokens/:
pip install asttokens
代码在github上:https://github.com/gristlabs/asttokens。
api引用在这里:http://asttokens.readthedocs.io/en/latest/api-index.html。
用法
astTokens同时适用于python2和python3。
astTokens可以注释由ast, 以及那些由astroid建造的。
下面是一个示例:
importasttokens,astsource="Robot('blue').walk(steps=10*n)"atok=asttokens.ASTTokens(source,parse=True)
标记树后,节点将获得.first_token、.last_token属性,以及 ASTTokens对象提供了有用的方法:
attr_node=next(nforninast.walk(atok.tree)ifisinstance(n,ast.Attribute))print(atok.get_text(attr_node))start,end=attr_node.last_token.startpos,attr_node.last_token.endposprint(atok.text[:start]+'RUN'+atok.text[end:])
从而产生此输出:
Robot('blue').walk Robot('blue').RUN(steps=10*n)
ASTTokens对象还提供了遍历和搜索组成 代码(或特定的ast节点),它比处理文本更有用、更强大 直接的。
测试
测试位于tests/子目录中。要运行所有测试,请运行:
nosetests