python - 如何格式化 AST 解析
问题描述
我想格式化以下 ast 解析:
>>> import ast
>>> print(ast.dump(ast.parse('-a+b')))
Module(body=[Expr(value=BinOp(left=UnaryOp(op=USub(), operand=Name(id='a', ctx=Load())), op=Add(), right=Name(id='b', ctx=Load())))])
似乎该indent
选项是在 python3.9 中引入的,但在那之前我没有看到“漂亮打印”的选项。有哪些选项可以为语法树打印格式良好的输出?
解决方案
如果您需要在较早的 python 版本中漂亮地打印 AST 并且对 Python3.9 中的 indent 函数感到满意,为什么不直接dump
从 3.9 中获取该函数并在您的项目中实现它呢?源代码在这里:https ://github.com/python/cpython/blob/e56d54e447694c6ced2093d2273c3e3d60b36b6f/Lib/ast.py#L111-L175
而且它看起来不是很复杂,似乎没有使用 3.9 特有的任何功能。
推荐阅读
- javascript - fetch post 给我未定义的已发布数据?
- android - CMake Android交叉编译:clang总是尝试与gcc工具链链接
- html - 关于块元素高度百分比的混淆
- asp.net-mvc - 无法在 IE 中使用打印对话框打开 blob url
- mongodb - 为什么聚合框架比简单的查找查询慢
- vba - 在对话框中选择文件,将路径放在文本框中,以及另一个用于导入为表格的按钮
- jquery - Kendo TreeView 显示未定义
- html - 如何使指定的文本变红
- c++ - 将整个链表插入到给定位置的其他链表中
- node.js - 如何使用 Azure IOT HUB 订阅 mqtt 代理上的主题,因为我希望在发布主题时将数据存储在 Azure iot 中心