# sql **Repository Path**: lushell/sql ## Basic Information - **Project Name**: sql - **Description**: Pure SQL parser using C based on Flex and Bison. - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-12-14 - **Last Updated**: 2023-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sql #### 介绍 基于Flex & Bison实现的一个纯粹的SQL解析器 1. 文件介绍 include - 头文件 common.h - 仅分析器使用 node_tag.h - 基础node和node类型定义 parsenodes.h - 语法数据结构,语法树的结构统一存放位置。 kwlookup.h - 关键字静态HASH查找 list.h - 链表,存放语法树 mysql80_kwlist_d.h - 静态HASH mysql80_kwlist.h - 关键字ASCII排序表 query_options.h - option定义 value.h - 常量值数据结构 gram.y - 语法文件 kwlookup.c - 关键字静态HASH查找 list.c - 链表 main.c - 主测试程序 parser.c - 解析器封装 scan.l - 词法文件 test.sql - 测试样例,样例增加后需要修正样本结果。 test.sh - 测试脚本 log.txt - 测试结果,测试脚本输出文件。 log.ok - 样本结果,经过人工检查的正确输出结果。 #### 软件架构 软件架构说明 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. 增加关键词 安装ASCII排序放到文件include/mysql80_kwlist.h合适位置。 重新生成完美HASH文件:include/mysql80_kwlist_d.h 2. 新增语法 在include/parsenodes.h增加数据结构 在gram.y - production stmt按照顺序把入口增加到列表。 在gram.y适当的是为书写语法结构,或引用现有语法结构。 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 语法冲突分析 bison -d -o gram.c gram.y -Wno-deprecated -Wcounterexamples