Skip to content

Commit 2409c8b

Browse files
authored
Merge pull request #4 from qidi1/change_path
rename src to sql_parser
2 parents c2962ef + cdc4e40 commit 2409c8b

60 files changed

Lines changed: 109 additions & 139 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,21 @@ pip install sqlgpt-parser
1111
### Parser SQL
1212

1313
```python
14-
>>> from sql_parser.mysql_parser import parser as mysql_parser
14+
>>> from sqlgpt_parser.sql_parser.mysql_parser import parser as mysql_parser
1515
>>> mysql_parser.parse("select * from t")
1616
Query(query_body=QuerySpecification(select=Select(distinct=False, select_items=[SingleColumn(expression=QualifiedNameReference(name=QualifiedName.of("*")))]), from_=Table(name=QualifiedName.of("t"), for_update=False), order_by=[], limit=0, offset=0, for_update=False, nowait_or_wait=False), order_by=[], limit=0, offset=0)
17-
>>> from sql_parser.oceanbase_parser import parser as oceanbase_parser
17+
>>> from sqlgpt_parser.sql_parser.oceanbase_parser import parser as oceanbase_parser
1818
>>> oceanbase_parser.parse("select * from t")
1919
Query(query_body=QuerySpecification(select=Select(distinct=False, select_items=[SingleColumn(expression=QualifiedNameReference(name=QualifiedName.of("*")))]), from_=Table(name=QualifiedName.of("t"), for_update=False), order_by=[], limit=0, offset=0, for_update=False, nowait_or_wait=False), order_by=[], limit=0, offset=0)
20-
>>> from sql_parser.odps_parser import parser as odps_parser
20+
>>> from sqlgpt_parser.sql_parser.odps_parser import parser as odps_parser
2121
>>> odps_parser.parse("select * from t")
2222
Query(query_body=QuerySpecification(select=Select(distinct=False, select_items=[SingleColumn(expression=QualifiedNameReference(name=QualifiedName.of("*")))]), from_=Table(name=QualifiedName.of("t"), for_update=False), order_by=[], limit=0, offset=0, for_update=False, nowait_or_wait=False), order_by=[], limit=0, offset=0)
2323
```
2424

2525
### Format SQL
2626
```python
27-
>>> from sql_parser.format.formatter import format_sql
28-
>>> from sql_parser.mysql_parser import parser
27+
>>> from sqlgpt_parser.format.formatter import format_sql
28+
>>> from sqlgpt_parser.mysql_parser import parser
2929
>>> result=parser.parse("select * from t")
3030
>>> format_sql(result)
3131
'SELECT\n *\nFROM\n t'

docs/docs-ch/Parser Module Development Guide.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,8 +245,9 @@ The comment in `p_delete` corresponds to the syntax rule for the `DELETE` statem
245245
Once the grammar rules are written, they can be used to parse SQL statements. Taking `mysql_parser` as an example, you can use this grammar rule for parsing SQL statements.
246246

247247
```python
248-
from src.parser.mysql_parser.parser import parser as mysql_parser
249-
from src.parser.mysql_parser.lexer import lexer as mysql_lexer
248+
from sqlgpt_parser.parser.mysql_parser.parser import parser as mysql_parser
249+
from sqlgpt_parser.parser.mysql_parser.lexer import lexer as mysql_lexer
250+
250251
sql = "DELETE FROM t WHERE a=1"
251252
result = mysql_parser.parse(sql, lexer=mysql_lexer)
252253
```

docs/docs-ch/SQL Parser 开发指南.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
`parser``sqlgpt-parser` 的基础模块,它将 SQL 语句按照预定义 SQL 语法规则解析,从文本转换成抽象语法树(`AST`)。
44

5-
`sqlgpt-parser``parser` 基于 [PLY](https://github.com/dabeaz/ply) 编写。PLY 是一个用于构建词法和语法分析器的 Python 工具。它能够根据指定的模式对输入的文本进行分析,它会在程序运行之前,自动编译项目 [sql-parser](../../src/sql_parser/) 文件夹下的词法规则和语法规则文件,生成可执行代码。
5+
`sqlgpt-parser``parser` 基于 [PLY](https://github.com/dabeaz/ply) 编写。PLY 是一个用于构建词法和语法分析器的 Python 工具。它能够根据指定的模式对输入的文本进行分析,它会在程序运行之前,自动编译项目 [sql-parser](../../sqlgpt_parser/sql_parser/) 文件夹下的词法规则和语法规则文件,生成可执行代码。
66

77
## 词法解析与语法解析
88

@@ -161,7 +161,7 @@ def p_expr_paren(p):
161161

162162
## `sqlgpt-parser``parser` 实现
163163

164-
`sqlgpt-parser` 中共有三个 SQL 语法解析器 ,分别在 [mysql_parser](../../src/sql_parser/mysql_parser)[oceanbase_parser](../../src/sql_parser/oceanbase_parser)[odps_parser](../../src/sql_parser/odps_parser) 文件夹下,三个文件夹都包含`lexer.py``reserved.py``parser.py` 三个文件。
164+
`sqlgpt-parser` 中共有三个 SQL 语法解析器 ,分别在 [mysql_parser](../../sqlgpt_parser/sql_parser/mysql_parser)[oceanbase_parser](../../sqlgpt_parser/sql_parser/oceanbase_parser)[odps_parser](../../sqlgpt_parser/sql_parser/odps_parser) 文件夹下,三个文件夹都包含`lexer.py``reserved.py``parser.py` 三个文件。
165165

166166
`lexer.py``reserved.py` 文件都用于词法解析。`reserved.py` 中定义了 SQL 的关键字,关键字定义在`reserved``nonreserved` 两个变量中 ,`reserved` 里面包含了所有 `sql` 中不可用作列名、表名或者别名的关键字,`nonreserved` 则是可以用作列名、表名或者别名的关键字。
167167

@@ -260,7 +260,8 @@ def p_delete(p):
260260
完成语法规则的编写后就可以使用,该语法规则解析 `SQL` 语句,以 `mysql_parser` 为例。
261261

262262
```python
263-
from src.sql_parser.mysql_parser import parser as mysql_parser
263+
from sqlgpt_parser.sql_parser.mysql_parser import parser as mysql_parser
264+
264265
sql = "DELETE FROM t WHERE a=1"
265266
result = mysql_parser.parse(sql)
266267
```

docs/docs-en/SQL Parser Development Guide.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
The `parser` module is the foundational module of `sqlgpt-parser`. It parses SQL statements according to predefined SQL grammar rules, converting them from text into an abstract syntax tree (`AST`).
44

5-
The `parser` module in `sqlgpt-parser` is written using [PLY](https://github.com/dabeaz/ply). PLY is a Python tool for building lexical and parsing analyzers. It can analyze input text based on specified patterns and automatically compile the lexical and grammar rule files in the [sql-parser](../../src/sql_parser/) folder of the project before the program runs, generating executable code.
5+
The `parser` module in `sqlgpt-parser` is written using [PLY](https://github.com/dabeaz/ply). PLY is a Python tool for building lexical and parsing analyzers. It can analyze input text based on specified patterns and automatically compile the lexical and grammar rule files in the [sql-parser](../../sqlgpt_parser/sql_parser/) folder of the project before the program runs, generating executable code.
66

77
## Lexical Analysis and Syntax Analysis
88

@@ -158,7 +158,7 @@ PLY uses the notation `p[position]` to access the stack, where `p[0]` correspond
158158

159159
## Implementation of the `parser` for `sqlgpt-parser`
160160

161-
There are a total of three SQL parsers in `sqlgpt-parser`, located in the [mysql_parser](../../src/sql_parser/mysql_parser), [oceanbase_parser](../../src/sql_parser/oceanbase_parser), and [odps_parser](../../src/sql_parser/odps_parser) folders. Each of these folders contains three files: `lexer.py`, `reserved.py`, and `parser.py`.
161+
There are a total of three SQL parsers in `sqlgpt-parser`, located in the [mysql_parser](../../sqlgpt_parser/sql_parser/mysql_parser), [oceanbase_parser](../../sqlgpt_parser/sql_parser/oceanbase_parser), and [odps_parser](../../sqlgpt_parser/sql_parser/odps_parser) folders. Each of these folders contains three files: `lexer.py`, `reserved.py`, and `parser.py`.
162162

163163
The `lexer.py` and `reserved.py` files are both used for lexical analysis. In `reserved.py`, SQL keywords are defined and stored in two variables: `reserved` and `nonreserved`. The `reserved` variable contains all the keywords that cannot be used as column names, table names, or aliases in SQL. On the other hand, `nonreserved` contains keywords that can be used as column names, table names, or aliases.
164164

@@ -245,7 +245,8 @@ The comment in `p_delete` corresponds to the syntax rule for the `DELETE` statem
245245
Once the grammar rules are written, they can be used to parse SQL statements. Taking `mysql_parser` as an example, you can use this grammar rule for parsing SQL statements.
246246

247247
```python
248-
from src.sql_parser.mysql_parser import parser as mysql_parser
248+
from sqlgpt_parser.sql_parser.mysql_parser import parser as mysql_parser
249+
249250
sql = "DELETE FROM t WHERE a=1"
250251
result = mysql_parser.parse(sql)
251252
```

pyproject.toml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "flit_core.buildapi"
44

55
[project]
66
name = "sqlgpt-parser"
7-
version = "0.0.1a1"
7+
version = "0.0.1a2"
88
authors = [
99
{ name="luliwjc", email="[email protected]" },
1010
{ name="Ifffff", email="[email protected]" },
@@ -24,8 +24,6 @@ dependencies = [
2424
"ply == 3.11",
2525
]
2626

27-
[tool.flit.module]
28-
name = "sql_parser"
2927
[project.urls]
3028
"Homepage" = "https://github.com/eosphoros-ai/sqlgpt-parser"
3129
"Bug Tracker" = "https://github.com/eosphoros-ai/sqlgpt-parser/issues"

sqlgpt_parser/__init__.py

Whitespace-only changes.

sqlgpt_parser/format/__init__.py

Whitespace-only changes.
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99
distributed under the License is distributed on an "AS IS" BASIS,
1010
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1111
"""
12-
from src.sql_parser.tree import JsonTableColumn
13-
from src.sql_parser.tree.explain import ExplainFormat, ExplainType
14-
from src.sql_parser.tree.grouping import SimpleGroupBy
15-
from src.sql_parser.tree.join_criteria import JoinOn, JoinUsing, NaturalJoin
16-
from src.sql_parser.tree.table import Table, TableSubquery
17-
from src.sql_parser.tree.visitor import AstVisitor
18-
from src.sql_parser.parser_utils import FIELD_REFERENCE_PREFIX
12+
from sqlgpt_parser.sql_parser.tree import JsonTableColumn
13+
from sqlgpt_parser.sql_parser.tree.explain import ExplainFormat, ExplainType
14+
from sqlgpt_parser.sql_parser.tree.grouping import SimpleGroupBy
15+
from sqlgpt_parser.sql_parser.tree.join_criteria import JoinOn, JoinUsing, NaturalJoin
16+
from sqlgpt_parser.sql_parser.tree.table import Table, TableSubquery
17+
from sqlgpt_parser.sql_parser.tree.visitor import AstVisitor
18+
from sqlgpt_parser.sql_parser.parser_utils import FIELD_REFERENCE_PREFIX
1919

2020

2121
class Formatter(AstVisitor):
Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,4 @@
99
distributed under the License is distributed on an "AS IS" BASIS,
1010
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1111
"""
12-
13-
import sys
14-
15-
sys.path.insert(0, '..')
12+
__path__ = __import__("pkgutil").extend_path(__path__, __name__)

0 commit comments

Comments
 (0)