跳转到主要内容

一个过程式SQL解析器,使用Antlr4编写

项目描述

antlr-plsql

Build Status PyPI version

开发

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 (622.3 kB 查看哈希值)

上传时间

由以下支持