Python AST 可视化工具(支持 Kotlin & Java) 的完整代码
·
Python AST 可视化工具(支持 Kotlin & Java) 的完整代码,你可以在左侧 Canvas 中直接查看、修改或扩展。
# AST Visualizer for Kotlin and Java using tree-sitter
# Requirements: pip install tree_sitter tree_sitter_languages graphviz
# And graphviz system package installed.
from tree_sitter import Language, Parser
from tree_sitter_languages import get_language
from graphviz import Digraph
# Load languages
java_lang = get_language('java')
kotlin_lang = get_language('kotlin')
parser = Parser()
def parse_code(code: str, lang: str):
if lang.lower() == 'java':
parser.set_language(java_lang)
elif lang.lower() == 'kotlin':
parser.set_language(kotlin_lang)
else:
raise ValueError('Unsupported language')
return parser.parse(bytes(code, 'utf8')).root_node
def visualize_ast(node, graph, parent_id=None):
node_id = str(id(node))
label = f"{node.type}"
graph.node(node_id, label)
if parent_id:
graph.edge(parent_id, node_id)
for child in node.children:
visualize_ast(child, graph, node_id)
def generate_ast_graph(code: str, lang: str, output_path: str = 'ast_output'):
root = parse_code(code, lang)
graph = Digraph(comment=f"AST for {lang}")
visualize_ast(root, graph)
graph.render(output_path, format='png', cleanup=True)
return output_path + '.png'
if __name__ == '__main__':
kotlin_sample = """
fun add(a: Int, b: Int): Int {
return a + b
}
"""
java_sample = """
public class Test {
public int add(int a, int b) {
return a + b;
}
}
"""
print(generate_ast_graph(kotlin_sample, 'kotlin', 'kotlin_ast'))
print(generate_ast_graph(java_sample, 'java', 'java_ast'))
这个工具基于:
✅ tree-sitter(解析 Kotlin、Java 的语法树)
✅ graphviz(渲染 AST 树结构为 PNG)
运行方式:
pip install tree_sitter tree_sitter_languages graphviz
brew install graphviz # macOS
执行后会生成:
kotlin_ast.pngjava_ast.png
如果你希望:
- 添加 Web 可视化版本(Flask/Web)
- 添加 AST 节点点击展开/折叠
- 添加 AST → JSON 导出
- 添加 代码高亮 + AST 双视图
我可以继续帮你扩展。
更多推荐


所有评论(0)