Tree-sitter 入门
tree-sitter 简介
Tree-sitter is a parser generator tool and an incremental parsing library. It can build a concrete syntax tree for a source file and efficiently update the syntax tree as the source file is edited. Tree-sitter aims to be:
General enough to parse any programming language
Fast enough to parse on every keystroke in a text editor
Robust enough to provide useful results even in the presence of syntax errors
Dependency-free so that the runtime library (which is written in pure C) can be embedded in any application
概括的来说,tree-sitter 是一个解析器生成工具和增量解析库,能够将代码源文件解析成具体的语法树,能解析绝大多数语言,并且用纯 c 编写,无依赖。更详细的介绍,可以从官方文档中查看:https://tree-sitter.github.io/tree-sitter
本系列介绍在 python 中使用 tree-sitter 解析不同语言,以下介绍安装及用法。
py-tree-sitter 安装
该包现在只适用于 python3,需要安装 c 编译器,安装命令为:
在 windows 环境中安装时,可能会有以下报错,
根据https://xie.infoq.cn/article/a9d8231121bb5370ae8b8690e 中安装 c 编译器即可。
py-tree-sitter 用法
使用 Language.build_library 方法,将现有或自己的语言存储库编译为 python 可以是用的库,首先将语言存储库下载到本地(新建 vendor 目录,将代码下载到 vendor 目录下)
在与 vendor 同级的目录下,新建 py 文件,将语言存储库编译,代码如下
将语言作为对象,加载到我们的应用程序中
解析 python 代码,并遍历语法树的代码如下
其中 1-4 行,是将 python 的语言加载,并初始化解析器,5-9 行,将一段 python 代码解析为语法树,11 行以后的,针对语法树进行遍历。
版权声明: 本文为 InfoQ 作者【阿呆】的原创文章。
原文链接:【http://xie.infoq.cn/article/744365785b31e5293ca634d86】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论