一个过程式SQL解析器,使用Antlr4编写
项目描述
antlr-plsql
开发
ANTLR需要Java,因此我们建议您在构建语法时使用Docker。Makefile包含清理、构建、测试和部署ANTLR语法的指令。它本身不运行Docker,因此请在Docker内运行make。
构建语法
# Build the docker container
docker build -t antlr_plsql .
# 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_plsql make build
设置Python模块
现在Python解析文件已可用,您可以使用pip安装它们
pip install -r requirements.txt
pip install -e .
并在Python中解析SQL代码
from antlr_plsql import ast
ast.parse("SELECT a from b")
使用AST查看器
如果您正在积极开发ANTLR语法或树形结构,建议在本地设置AST查看器,以便您可以立即以可视方式看到您更改的影响。
- 克隆ast-viewer存储库并按照说明构建Docker镜像
- 启动一个Docker容器,将其挂载到Python包,创建符号链接安装该包并在端口3000上运行服务器
docker run -it \
-u root \
-v ~/workspace/antlr-plsql:/app/app/antlr-plsql \
-p 3000:3000 \
ast-viewer \
/bin/bash -c "echo 'Install development requirements in development:' \
&& pip install --no-deps -e app/antlr-plsql \
&& 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_plsql
docker 镜像重建语法,然后重启ast-viewer
容器。
运行测试
# Similar to building the grammar, but running tests
# and not saving the generated files
docker build -t antlr_plsql .
docker run -t antlr_plsql make build test
或者在本地上运行测试,首先构建语法然后运行
pytest
Travis 部署
- 构建 Docker 镜像。
- 运行 Docker 镜像以构建语法并运行单元测试。
- 在新版本发布时,将生成的 Python 文件部署到 PyPi,以便轻松安装。
项目详情
关闭
antlr-plsql-0.9.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5bef8261031239176d483005fa5764eb6cafa6c7826d398f3e84d17038f88730 |
|
MD5 | 1df7725be812face1d3214645535d289 |
|
BLAKE2b-256 | 3a546d96bdfbd5dee02533992fa60ec8ac53040470f2d1c4a2f751f9c8e33329 |