用源代码位置注释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如何在应用程序中传递Map<String,List<String>>。属性spring启动应用程序   java OpenNLP不使用SOLR   java libgdx项目在安卓 studio 1.5.1中导入后出现错误   java Apache Axis1与JDK11的兼容性   java停止前一个处理程序postdelayed并启动新处理程序   Java swing jtable在jtable的第一行添加组件(文本字段、组合框等)   javacfoo。windows vscode终端中的java&&java Foo不工作   java为什么不编译列表中的负数   带有特殊字符和空格的Java CentOs文件路径FileNotFound   java Android获取一天开始和结束的Unix时间戳   java spring数据、分页和排序存储库、基于类类型的(嵌套)属性值排序   java我试图读取一个文本文件,找到特定的匹配项并打印出来,但我的代码不起作用   java使字节数组类型的参数在AxisWeb服务中为空   java如何在rxJava中不断尝试直到成功