用源代码位置注释ast树

asttokens的Python项目详细描述


https://img.shields.io/pypi/v/asttokens.svghttps://img.shields.io/pypi/pyversions/asttokens.svghttps://travis-ci.org/gristlabs/asttokens.svg?branch=masterhttps://readthedocs.org/projects/asttokens/badge/?version=latest

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java需要64位jdk 1.5 for windows   eclipse运算符+对于参数类型java是未定义的。双,爪哇。双人   未下载文件扩展名为的java文件   java不支持带有POST的媒体类型   从动态创建的多个EditText读取文本时发生java错误   java无法为同一xpath单击多个按钮   如何在Java中动态格式化字符串   java Android Clear Middle活动   多线程Java内存模型volatile和x86   git在Java中通过Jgit忽略文件或文件夹   java“决策无法区分输入的备选方案1、2…”   子类的javajpa继承   java需要弄清楚如何操作mutator来弄清楚一个类,教授说,我对如何操作感到困惑   java如何使用JDBC将数据从文件复制到PostgreSQL?