跳转到主要内容

一个T-SQL解析器,使用Antlr4编写

项目描述

antlr-tsql

Build Status PyPI version

开发

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

上传时间 源代码

由以下机构支持