一个T-SQL解析器,使用Antlr4编写
项目描述
antlr-tsql
开发
ANTLR需要Java,因此我们建议您在构建语法时使用Docker。Makefile包含清洁、构建、测试和部署ANTLR语法的指令。它本身不运行Docker,因此请在Docker内部运行make。
构建语法
# Build the docker container
docker build -t antlr_tsql .
# Run the container to build the python grammar
# Write parser files to local file system through volume mounting
docker run -it -v ${PWD}:/usr/src/app antlr_tsql make build
设置Python模块
现在Python解析文件可用,您可以使用pip安装它们
pip install -r requirements.txt
pip install -e .
然后在Python中解析SQL代码
from antlr_tsql import ast
ast.parse("SELECT a from b")
使用AST查看器
如果您正在积极开发ANTLR语法或树形结构,那么在本地设置AST查看器是个好主意,这样您就可以立即以可视方式看到您的更改的影响。
- 克隆ast-viewer存储库并按照说明构建Docker镜像。
- 启动一个挂载Python包的docker容器,创建符号链接安装包并在端口3000上运行服务器
docker run -it \
-u root \
-v ~/workspace/antlr-tsql:/app/app/antlr-tsql \
-p 3000:3000 \
ast-viewer \
/bin/bash -c "echo 'Install development requirements in development:' \
&& pip install --no-deps -e app/antlr-tsql \
&& python3 run.py"
如果您同时开发其他包,也挂载并安装它们
docker run -it \
-u root \
-v ~/workspace/antlr-ast:/app/app/antlr-ast \
-v ~/workspace/antlr-plsql:/app/app/antlr-plsql \
-v ~/workspace/antlr-tsql:/app/app/antlr-tsql \
-p 3000:3000 \
ast-viewer \
/bin/bash -c "echo 'Install development requirements in development:' \
&& pip install --no-deps -e app/antlr-ast \
&& pip install --no-deps -e app/antlr-plsql \
&& pip install --no-deps -e app/antlr-tsql \
&& python3 run.py"
- 如果您更新此存储库中的树形结构逻辑,应用程序将自动更新。
- 如果您更改语法,您必须首先重新构建语法(使用antlr_tsql Docker镜像)并重新启动ast-viewer容器。
运行测试
# Similar to building the grammar, but running tests
# and not saving the generated files
docker build -t antlr_tsql .
docker run -t antlr_tsql make build test
或者,在本地运行测试,首先构建语法然后运行
pytest
Travis部署
- 构建Docker镜像。
- 运行Docker镜像以构建语法并运行单元测试。
- 在发布新版本时,将生成的Python文件部署到PyPi,以便可以轻松安装。
项目详情
关闭
antlr-tsql-0.12.6.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8b3a41da30b7b8299e316abb08e815e6bfd89e06fa86121ce2da00318605c5f9 |
|
MD5 | fbefdc5bdb8268c4077eab763ebe14da |
|
BLAKE2b-256 | 6def9c5be4cbe024ebacd45b4c6c7e6418b847ba5b081bfb627b833853a83eb4 |