用antlr4编写的过程性sql解析器
antlr-plsql的Python项目详细描述
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代码:
fromantlr_plsqlimportastast.parse("SELECT a from b")
使用ast查看器
如果您正在积极开发anltr语法或树形,那么最好在本地设置AST viewer,这样您就可以立即以可视化的方式看到更改的影响。
- 克隆ast viewer repo并按照说明构建docker映像。
- 启动一个Docker容器,Volume装载Python包,Symlink安装包并在端口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
特拉维斯部署
- 建立Docker图像。
- 运行docker映像来构建语法并运行单元测试。
- 在新版本发布时,将生成的python文件部署到pypi,以便可以轻松安装它们。